JavaのStringBuilderの最後にある余分な区切り文字を削除します
この投稿では、最後に余分な区切り文字を削除する方法について説明します StringBuilder
Javaのクラス。
コレクションをループして各要素をコレクションに追加するときに、余分な区切り文字が追加されます。 文字列ビルダー デリミタで区切られたオブジェクト。最後に追加の区切り文字を追加する次のコードを考えてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringBuilder sb = new StringBuilder(); for (String color: colors) { sb.append(color).append(","); } System.out.println(sb); // プリント BLUE,RED,GREEN, } } |
これは、すべての Java 開発者が一生に一度は直面したことがある、非常に一般的な問題です。この問題に対処するためのいくつかの方法について説明します。
1.forループの使用
このメソッドでもコレクションをループしますが、それを賢明な方法で実行します。区切り文字を追加する代わりに、各値の先頭に区切り文字を追加し、空の文字列をコレクションの最初の値の区切り文字として使用します。こうすることで、最後に余分な区切り文字が追加されなくなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringBuilder sb = new StringBuilder(); String delimiter = ""; for (String color: colors) { sb.append(delimiter); delimiter = ","; sb.append(color); } System.out.println(sb); // 青、赤、緑 } } |
2. 変数の使用
もう 1 つのオプションは、変数を使用してコレクションのサイズを追跡し、リストの最後の要素にない場合にのみ区切り文字を追加することです。こうすることで、最後に余分な区切り文字を追加することを避けられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringBuilder sb = new StringBuilder(); int n = colors.size(); for (String color: colors) { sb.append(color); if (--n > 0) { sb.append(","); } } System.out.println(sb); // 青、赤、緑 } } |
3.使用する StringJoiner
Class
Java 8以降では、 StringJoiner の代わりにクラス StringBuilder
、区切り文字を受け取ります。 区切り文字で区切られた一連の値を構築します。このクラスは最後の区切り文字を自動的に処理し、末尾に余分な区切り文字を追加しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.Arrays; import java.util.List; import java.util.StringJoiner; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringJoiner sj = new StringJoiner(","); for (String color: colors) { sj.add(color); } System.out.println(sj); // 青、赤、緑 } } |
4.使用する setLength()
また deleteCharAt()
メソッド
次の解決策では、ループで末尾に余分な文字を追加できます。 StringBuilder
、ただし、によって提供されるユーティリティメソッドを使用して削除します。 StringBuilder
クラス:
⮚使用 setLength()
方法
The setLength()
メソッドを使用すると、 StringBuilder
物体。長さを設定できます StringBuilder
現在の長さより 1 つ小さくします。これにより、最後の文字が効果的に削除されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringBuilder sb = new StringBuilder(); for (String color: colors) { sb.append(color).append(","); } if (sb.length() > 0) { sb.setLength(sb.length() - 1); } System.out.println(sb); // 青、赤、緑 } } |
⮚使用 deleteCharAt()
方法
The deleteCharAt()
メソッドを使用すると、文字を削除できます StringBuilder
インデックスを指定してオブジェクトを取得します。使用できます sb.length() - 1
最後の文字を削除するためのインデックスとして使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.Arrays; import java.util.List; class Main { public static void main(String[] args) { List<String> colors = Arrays.asList("BLUE", "RED", "GREEN"); StringBuilder sb = new StringBuilder(); for (String color: colors) { sb.append(color).append(","); } if (sb.length() > 0) { sb.deleteCharAt(sb.length() - 1); } System.out.println(sb); // 青、赤、緑 } } |
最後に余分な区切り文字を削除するだけです StringBuilder
Javaで。
関連記事: