1. ホーム
  2. java

[解決済み] StringBuilderの最後の文字を削除しますか?

2022-03-21 13:52:44

質問

コレクションをループして、各データをデリミタで区切った文字列を作らなければならないとき、いつも最後に余分なデリミタが入ってしまう。

for (String serverId : serverIds) {
  sb.append(serverId);
   sb.append(",");
}

のようなものを与えます。 serverId_1, serverId_2, serverId_3,

StringBuilderの最後の文字を削除したい(このループの後にも必要なので、変換せずに)。

どのように解決するのですか?

他の方が指摘されている deleteCharAt という方法もありますが、ここでは別の方法を紹介します。

String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  prefix = ",";
  sb.append(serverId);
}

または Joiner クラスから グアバ :)

Java 8の時点では。 StringJoiner は、標準のJREの一部です。