Как удалить последний символ строки?
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.