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

1. Обзор

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

2. Использование String.substring ()

Самый простой способ заключается в использовании встроенного в подстроке () метода в Струнном классе.

Чтобы удалить последний символ данной строки, мы должны использовать два параметра: 0 в качестве начального индекса и индекс предпоследнего символа. Мы можем добиться того, что с помощью вызова Строка «s длины () метод и вычитанием 1 из результата.

Однако этот метод небезопасен для null, и если мы используем пустую строку, это приведет к сбою.

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

public static String removeLastChar(String s) 

Мы можем провести рефакторинг кода и использовать 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 класс от Apache Commons Lang3 библиотеки, что предлагает полезные строковые операции. Один из них - нулевой безопасный метод substring () , который обрабатывает исключения.

Чтобы включить 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);

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

4. Использование StringUtils.chop ()

Класс StringUtils предоставляет метод chop (), который хорошо работает со всеми граничными сценариями: пустыми и нулевыми строками .

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

StringUtils.chop(TEST_STRING);

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

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

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

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

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

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

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

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

Наконец, давайте перепишем реализацию на Java 8 :

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

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

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

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

Как всегда, код, использованный в статье, можно найти на GitHub.