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.