[解決済み】Javaで区切りの良い文字列を作るにはどうすればいい?
2022-04-18 08:31:46
質問
Javaアプリで作業しているとき、私は最近、別のWebサービスに渡す値のカンマ区切りリストを、要素がいくつあるかを事前に知ることなく組み立てる必要がありました。私が頭の中で思いついた最善の方法は、次のようなものでした。
public String appendWithDelimiter( String original, String addition, String delimiter ) {
if ( original.equals( "" ) ) {
return addition;
} else {
return original + delimiter + addition;
}
}
String parameterString = "";
if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", "," );
if ( anotherCondition ) parameterString = appendWithDelimiter( parameterString, "anotherElementName", "," );
文字列があちこちで作成されているので、特に効率的ではないことは承知していますが、最適化よりも分かりやすさを重視していました。
Rubyでは、代わりに以下のようなことができ、よりエレガントに感じます。
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
しかし、Javaにはjoinコマンドがないので、同等のものは見つかりませんでした。
では、Javaでこれを行うには、どのような方法があるのでしょうか?
どのように解決するのか?
Java8以前のバージョン。
Apacheのcommons langは、あなたがRubyで参照しているものと非常によく似たjoinメソッドを提供しています。
StringUtils.join(java.lang.Iterable,char)
Java 8:
Java 8では、以下のような方法ですぐに参加できます。
StringJoiner
と
String.join()
. 以下のスニペットは、その使い方を示しています。
StringJoiner joiner = new StringJoiner(",");
joiner.add("01").add("02").add("03");
String joinedString = joiner.toString(); // "01,02,03"
String.join(CharSequence delimiter, CharSequence... elements))
String joinedString = String.join(" - ", "04", "05", "06"); // "04 - 05 - 06"
String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> strings = new LinkedList<>();
strings.add("Java");strings.add("is");
strings.add("cool");
String message = String.join(" ", strings);
//message returned is: "Java is cool"
関連
-
[解決済み] Eclipse デフォルトのフォント名
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Javaで文字列を分割する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み] javaでリストをカンマ区切り文字列に変換するベストな方法 [重複]。