Wie entferne ich das letzte Zeichen einer Zeichenfolge?

So entfernen Sie das letzte Zeichen einer Zeichenfolge?

1. Überblick

In diesem kurzen Artikel werden verschiedene Techniken zum Entfernen des letzten Zeichens vonString. überprüft und diskutiert

2. Verwenden vonString.substring()

Am einfachsten ist es,the built-in substring() method der KlasseString zu verwenden.

Um das letzte Zeichen eines bestimmtenString, zu entfernen, müssen zwei Parameter verwendet werden:0 als Startindex und Index des vorletzten Zeichens. Wir können dies erreichen, indem wir dielength()-Methode vonStringaufrufen und1 vom Ergebnis subtrahieren.

this method is not null-safe und wenn wir eine leere Zeichenfolge verwenden, wird dies fehlschlagen.

Um Probleme mit leeren und leeren Zeichenfolgen zu überwinden, können wir die Methode in eine Hilfsklasse einbinden:

public static String removeLastChar(String s) {
    return (s == null || s.length() == 0)
      ? null
      : (s.substring(0, s.length() - 1));
}

Wir können den Code überarbeiten 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 vonStringUtils.substring()

Anstatt das Rad neu zu erfinden, können wir die Bibliothek vonStringUtils class from Apache Commons Lang3verwenden, die hilfreiche Operationen vonStringbietet. Eines davon istnull-safe substring() method, das Ausnahmen behandelt.

UmStringUtils einzuschließen, müssen wir unserepom.xml-Datei aktualisieren:


    org.apache.commons
    commons-lang3
    3.0

StringUtils.substring() erfordert drei Parameter: ein gegebenesString, ist ein Index des ersten Zeichens (in unserem Fall ist es immer 0) und ein Index des vorletzten Zeichens. Auch hier können wir einfach die Methodelength() verwenden und1: subtrahieren

String TEST_STRING = "abcdef";

StringUtils.substring(TEST_STRING, 0, TEST_STRING.length() - 1);

Diese Operation ist jedoch nicht wieder nullsicher. Es wird jedoch mit leerenStringsfunktionieren.

4. Verwenden vonStringUtils.chop()

StringUtils class provides the chop() method that works well with all edge scenarios: empty and null Strings.

Es ist sehr einfach zu bedienen und erfordert nur einen Parameter:String. Der einzige Zweck besteht darin, das letzte Zeichen zu entfernen. Nicht mehr, nicht weniger:

StringUtils.chop(TEST_STRING);

5. Regulären Ausdruck verwenden

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

Zum Beispiel können wirreplaceAll() method of String class itself verwenden - wobei zwei Parameter verwendet werden: regulärer Ausdruck und ErsatzString:

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

Beachten Sie, dass die Operation natürlichnot null-safe ist, da wir eine Methode fürString aufrufen.

AuchreplaceAll() und Regex-Ausdruck können auf den ersten Blick komplex sein. Sie können mehr über Regexhere 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, wenn einString mit einem Zeilenumbruch endet, die obige Methode fehlschlägt, da“.” im regulären Ausdruck mit jedem Zeichen außer den Zeilenabschlüssen übereinstimmt.

Zum Schluss schreiben wirthe implementation with Java 8 neu:

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 vonString 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 fortschrittlichere Lösung mit regulären Ausdrücken verwenden.

Wie immer ist der im gesamten Artikel verwendete Codeover on GitHub.