~~ Ich dachte, es wurde mit der Standardmethode von StringBuilder erstellt, aber ich konnte es nicht finden, egal wie ich gesucht habe, also habe ich es selbst gemacht. ~~ ↑ Es war eine irreführende Beschreibung ...
Ich fragte mich, ob es eine Methode gab, die darauf spezialisiert war, die angegebene Anzahl von Zeichen am Ende zu löschen, aber ich konnte sie nicht finden, als ich danach suchte, also habe ich sie selbst gemacht. ist.
public class Demo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("hoge");
//Löschen Sie ein Zeichen am Ende
sb.setLength(sb.length()-1);
//Ausführungsergebnis: Schwein
System.out.println(sb);
}
}
setlength
Legt die Länge der Sequenzzeichenfolge fest.
length()
Gibt die aktuelle Länge der Zeichenfolge zurück. Im obigen Beispiel wird 4 zurückgegeben.
Jetzt müssen Sie nur noch die Anzahl der Zeichen, die Sie löschen möchten, von `length ()`
subtrahieren.
Beachten Sie, dass bei Angabe einer Zeichenfolgenlänge unter 0 die Fehlermeldung "java.lang.StringIndexOutOfBoundsException" angezeigt wird.
StringBuilder sb = new StringBuilder("hoge");
sb.setLength(sb.length()-5);
//Fehler: Java.lang.StringIndexOutOfBoundsException: String index out of range: -1
setlength
Bevor du es tuststringbuilder
Es kann besser sein, die Länge von zu überprüfen.
//Wenn n Zeichen oder mehr vorhanden sind, löschen Sie n Zeichen am Ende
if (sb.length() >= n) {
sb.setLength(sb.length()-n);
}
delete(int start, int end)
Ist der Weg zu benutzen.
Ich habe es dir in den Kommentaren gesagt.
Ich habe es mir zuerst ausgedacht, aber ich dachte, dass es notwendig ist, sowohl die Startposition als auch die Endposition anzugeben, und die Lesbarkeit war gering, deshalb habe ich es abgelehnt.
length()
Ich dachte, ich müsste zweimal schreiben ...
Erstens, wenn Sie length () in einer Variablen haben, müssen Sie sie nur einmal schreiben! Es ist keine schlechte Lesbarkeit! Ich dachte noch einmal. Wenn Sie das Wort "Löschen" haben, ist es leicht zu verstehen, dass Sie das Zeichen löschen möchten.
StringBuilder sb = new StringBuilder("hoge");
int n = 2; //Anzahl der Zeichen, die Sie am Ende löschen möchten
int size = sb.length(); // length()In einer Variablen vom Typ int
//Satz mit zwei Buchstaben vom Ende entfernt
sb.delete(size-n, size);
//Ausführungsergebnis: ho
System.out.println(sb);
Die Notizen sind mit dem Beispielquellcode ① identisch, daher werden sie weggelassen.
deletecharat(int index)
Ist der Weg zu benutzen.
Ich habe es dir auch in den Kommentaren gesagt.
In diesem Fall können Sie ** nur ein Zeichen am Ende löschen **. Bitte beachten Sie, dass Sie nicht mehrere Zeichen am Ende löschen können **.
Ich denke jedoch, dass es (persönlich) besser lesbar ist als die beiden oben genannten Beispielquellcodes. Ich habe die offizielle Dokumentation brillant gezeigt, aber ich konnte es überhaupt nicht bemerken. Also werde ich es im Gebot erwähnen.
StringBuilder sb = new StringBuilder("hoge");
//Löschen Sie ein Zeichen am Ende
sb.deleteCharAt(sb.length()-1);
//Ausführungsergebnis: Schwein
System.out.println(sb);
Bitte lassen Sie mich wissen, ob es eine bessere Implementierung gibt.
StringBuilder (Java Platform SE 8)
Recommended Posts