536 Stimmen

Letztes Zeichen eines StringBuilders entfernen?

Wenn Sie eine Sammlung in einer Schleife durchlaufen und aus den einzelnen Daten eine durch ein Begrenzungszeichen getrennte Zeichenkette erstellen müssen, wird am Ende immer ein zusätzliches Begrenzungszeichen eingefügt, z. B.

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

Es gibt so etwas wie : serverId_1, serverId_2, serverId_3,

Ich möchte das letzte Zeichen im StringBuilder löschen (ohne es zu konvertieren, weil ich es nach dieser Schleife noch brauche).

40voto

In diesem Fall,

sb.setLength(sb.length() - 1);

ist vorzuziehen, da es nur den letzten Wert an '\0' während das Löschen des letzten Zeichens System.arraycopy

12voto

akash Punkte 22264

Con Java-8 können Sie die statische Methode von String Klasse,

String#join(CharSequence delimiter,Iterable<? extends CharSequence> elements) .


public class Test {

    public static void main(String[] args) {

        List<String> names = new ArrayList<>();
        names.add("James");
        names.add("Harry");
        names.add("Roy");
        System.out.println(String.join(",", names));
    }
}

OUTPUT

James,Harry,Roy

10voto

Rafiq Punkte 1980

Eine andere Alternative

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

9voto

Zaki Punkte 6827

Alternativ dazu,

StringBuilder result = new StringBuilder();
for(String string : collection) {
    result.append(string);
    result.append(',');
}
return result.substring(0, result.length() - 1) ;

6voto

Antoine Punkte 4016
StringBuilder sb = new StringBuilder();
sb.append("abcdef");
sb.deleteCharAt(sb.length() - 1);
assertEquals("abcde",sb.toString());
// true

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X