広告

Java : StringJoiner - API使用例

StringJoiner (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
API仕様書のおともにどうぞ。


概要

StringJoinerは、デリミタで区切られ、(オプション)指定された接頭辞から始まり、指定された接尾辞で終わる文字のシーケンスを構築するために使用されます。

クラス構成

StringJoinerは、指定した文字列で区切られた文字列を作成します。
また、接頭辞(prefix)と接尾辞(suffix)を指定できます。

final var sj = new StringJoiner("-", "[", "]");

sj.add("aaa").add("bbb").add("ccc");

final var ret = sj.toString();
System.out.println(ret); // "[aaa-bbb-ccc]"
final var sj = new StringJoiner(", ", "(", ")");

sj.add("xxx").add("yyy").add("zzz");

final var ret = sj.toString();
System.out.println(ret); // "(xxx, yyy, zzz)"

類似のAPIとして、String.joinと、Collectors.joiner があります。

final var list = List.of("aaa", "bbb", "ccc");

final var ret = String.join("-", list);
System.out.println(ret); // "aaa-bbb-ccc"
final var list = List.of("aaa", "bbb", "ccc");

final var ret = list.stream().collect(Collectors.joining("-", "[", "]"));
System.out.println(ret); // "[aaa-bbb-ccc]"

コンストラクタ

StringJoiner (CharSequence delimiter)

prefixおよびsuffixを指定せずに、指定されたdelimiterのコピーを使用して、文字を含まないStringJoinerを構築します。

final var sj = new StringJoiner("-");

sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj); // "aaa-bbb-ccc"

StringJoiner (CharSequence delimiter, CharSequence prefix, CharSequence suffix)

指定されたprefix、delimiterおよびsuffixのコピーを使用して、文字を含まないStringJoinerを構築します。

final var sj = new StringJoiner("-", "[", "]");

sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj); // "[aaa-bbb-ccc]"

メソッド

StringJoiner add (CharSequence newElement)

指定されたCharSequence値のコピーをStringJoiner値の次の要素として追加します。

final var sj = new StringJoiner(", ");

sj.add("aaa").add("bbb").add("ccc").add(null);
System.out.println(sj); // "aaa, bbb, ccc, null"

int length ()

このStringJoinerのString表現の長さを返します。

final var sj = new StringJoiner("-", "[", "]");

System.out.println(sj); // "[]"
System.out.println(sj.length()); // 2

sj.add("aaa");
System.out.println(sj); // "[aaa]"
System.out.println(sj.length()); // 5

sj.add("bbb");
System.out.println(sj); // "[aaa-bbb]"
System.out.println(sj.length()); // 9

StringJoiner merge (StringJoiner other)

指定されたStringJoinerの接頭辞と接尾辞を除いた内容が空でない場合は、それを次の要素として追加します。

final var sj1 = new StringJoiner("-", "[", "]");
final var sj2 = new StringJoiner(":");

sj1.add("aaa").add("bbb").add("ccc");
System.out.println(sj1); // "[aaa-bbb-ccc]"

sj2.add("012").add("345").add("678");
System.out.println(sj2); // "012:345:678"

sj1.merge(sj2).add("eee");
System.out.println(sj1); // "[aaa-bbb-ccc-012:345:678-eee]"

StringJoiner setEmptyValue (CharSequence emptyValue)

このStringJoinerの文字列表現を決定するときに要素がまだ追加されていない(つまり、空である)場合に使用する文字のシーケンスを設定します。

final var sj = new StringJoiner("-", "[", "]");
System.out.println(sj); // "[]"

sj.setEmptyValue("empty");
System.out.println(sj); // "empty"

sj.add("aaa").add("bbb").add("ccc");

System.out.println(sj); // "[aaa-bbb-ccc]"

String toString ()

prefix、これまで追加された値(delimiterで区切られている)、およびsuffixで構成された現在の値を返します(追加された要素が1つもない場合を除く。その場合は、prefix + suffixまたはemptyValue文字が返される)。

final var sj = new StringJoiner("-", "[", "]");

sj.add("aaa").add("bbb").add("ccc");

final var ret = sj.toString();
System.out.println(ret); // "[aaa-bbb-ccc]"

関連記事

ページの先頭へ