Как удалить последний символ строки?

Как удалить последний символ строки?

1. обзор

В этой быстрой статье мы собираемся проверить и обсудить различные методы удаления последнего символаString..

2. ИспользуяString.substring()

Самый простой способ - использоватьthe built-in substring() method классаString.

Чтобы удалить последний символ данногоString,, мы должны использовать два параметра:0 в качестве начального индекса и индекс предпоследнего символа. Мы можем добиться этого, вызвав методString ’slength() и вычтя1 из результата.

Однакоthis method is not null-safe, и если мы используем пустую строку, это не сработает.

Чтобы преодолеть проблемы с пустыми и пустыми строками, мы можем заключить метод в вспомогательный класс:

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

Мы можем реорганизовать код и использовать Java 8:

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. ИспользуяStringUtils.substring()

Вместо того, чтобы изобретать колесо, мы можем использовать библиотекуStringUtils class from Apache Commons Lang3, которая предлагает полезные операцииString. Один из них -null-safe substring() method, который обрабатывает исключения.

Чтобы включитьStringUtils, мы должны обновить наш файлpom.xml:


    org.apache.commons
    commons-lang3
    3.0

StringUtils.substring() требует трех параметров: заданногоString,, индекса первого символа (в нашем случае всегда будет 0) и индекса предпоследнего символа. Опять же, мы можем просто использовать методlength() и вычесть1:

String TEST_STRING = "abcdef";

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

Тем не менее, эта операция снова не является нулевой. Однако он будет работать с пустымStrings нормально.

4. ИспользуяStringUtils.chop()

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

Он очень прост в использовании и требует только одного параметра:String.. Его единственная цель - удалить последний символ. Ни больше ни меньше:

StringUtils.chop(TEST_STRING);

5. Использование регулярного выражения

Мы также можем удалить последний символ (или любое количество символов) изString, хорошо используя регулярные выражения.

Например, мы можем использоватьreplaceAll() method of String class itself - который принимает два параметра: регулярное выражение и заменуString:

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

Обратите внимание: поскольку мы вызываем метод дляString, операция, конечно же,not null-safe.

Кроме того,replaceAll() и выражение регулярного выражения могут быть сложными на первый взгляд. Вы можете узнать больше о регулярном выраженииhere, но, чтобы сделать логику более удобной для пользователя, мы можем обернуть ее во вспомогательный класс:

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

Обратите внимание, что еслиString заканчивается новой строкой, то вышеуказанный метод не сработает, поскольку“.” в регулярном выражении соответствует любому символу, кроме терминаторов строки.

Наконец, давайте перепишемthe implementation with Java 8:

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

6. Заключение

В этой короткой статье мы обсудили различные способы удаления только последнего символаString - некоторые из них ручные, некоторые уже готовые.

И, если нам нужно больше гибкости и нам нужно удалить больше символов, мы можем найти более продвинутое решение с помощью регулярных выражений.

Как всегда, код, использованный в статье, находится вover on GitHub.