Wie entferne ich das letzte Zeichen eines Strings?

1. Übersicht

In diesem kurzen Artikel werden wir verschiedene Techniken zum Entfernen des letzten Zeichens eines Strings überprüfen und diskutieren .

2. Verwenden von String.substring ()

Am einfachsten ist es, die integrierte substring () -Methode der String- Klasse zu verwenden.

Um das letzte Zeichen eines bestimmten Strings zu entfernen , müssen zwei Parameter verwendet werden: 0 als Startindex und Index des vorletzten Zeichens. Das können wir erreichen durch den Aufruf String ‚s length () Methode und Subtrahieren 1 aus dem Ergebnis.

Diese Methode ist jedoch nicht nullsicher. Wenn wir eine leere Zeichenfolge verwenden, schlägt dies fehl.

Um Probleme mit null und leeren Zeichenfolgen zu beheben, können wir die Methode in eine Hilfsklasse einschließen:

public static String removeLastChar(String s) 

Wir können den Code umgestalten und Java 8 verwenden:

public static String removeLastCharOptional(String s) { return Optional.ofNullable(s) .filter(str -> str.length() != 0) .map(str -> str.substring(0, str.length() - 1)) .orElse(s); }

3. Verwenden von StringUtils.substring ()

Anstatt das Rad neu zu erfinden, können wir die StringUtils- Klasse aus der Apache Commons Lang3- Bibliothek verwenden, die hilfreiche String- Operationen bietet . Eine davon ist eine null-sichere substring () -Methode , die Ausnahmen behandelt.

Um StringUtils einzuschließen, müssen wir unsere Datei pom.xml aktualisieren :

 org.apache.commons commons-lang3 3.0 

StringUtils.substring () erfordert drei Parameter: einen bestimmten String, einen Index des ersten Zeichens (in unserem Fall immer 0) und einen Index des vorletzten Zeichens. Auch hier können wir einfach die length () -Methode verwenden und 1 subtrahieren :

String TEST_STRING = "abcdef"; StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);

Diese Operation ist jedoch nicht wieder null-sicher. Es wird aber mit leeren Strings gut funktionieren .

4. Verwenden von StringUtils.chop ()

Die StringUtils- Klasse bietet die chop () -Methode, die mit allen Kanten-Szenarien gut funktioniert: leere und null-Zeichenfolgen .

Es ist sehr einfach zu bedienen und erfordert nur einen Parameter: den String. Sein einziger Zweck ist es, das letzte Zeichen zu entfernen. Nicht mehr, nicht weniger:

StringUtils.chop(TEST_STRING);

5. Verwenden des regulären Ausdrucks

Wir können auch das letzte Zeichen (oder eine beliebige Anzahl von Zeichen) aus einem String entfernen, indem wir reguläre Ausdrücke gut verwenden.

Zum Beispiel können wir die replaceAll () -Methode der String- Klasse selbst verwenden, die zwei Parameter akzeptiert : den regulären Ausdruck und den Ersatz- String :

TEST_STRING.replaceAll(".$", "");

Beachten Sie, dass die Operation natürlich nicht null-sicher ist , da wir eine Methode für den String aufrufen .

Außerdem können replaceAll () und Regex-Ausdrücke auf den ersten Blick komplex sein. Sie können hier mehr über Regex lesen, aber um die Logik ein wenig benutzerfreundlicher zu gestalten, können wir sie in eine Hilfsklasse einschließen:

public static String removeLastCharRegex(String s) { return (s == null) ? null : s.replaceAll(".$", ""); }

Beachten Sie, dass die obige Methode als "." Fehlschlägt , wenn ein String mit einem Zeilenumbruch endet . in Regex entspricht jedem Zeichen außer den Zeilenabschlüssen.

Lassen Sie uns abschließend die Implementierung mit Java 8 neu schreiben :

public static String removeLastCharRegexOptional(String s) { return Optional.ofNullable(s) .map(str -> str.replaceAll(".$", "")) .orElse(s); }

6. Fazit

In diesem kurzen Artikel haben wir verschiedene Möglichkeiten besprochen, nur das letzte Zeichen eines Strings zu entfernen - einige manuell, andere sofort einsatzbereit.

Und wenn wir mehr Flexibilität benötigen und mehr Zeichen entfernen müssen, können wir die erweiterte Lösung mit regulären Ausdrücken verwenden.

Wie immer ist der im gesamten Artikel verwendete Code auf GitHub zu finden.