Узнайте, как удалить последний символ из строки в Java, используя простые примеры. Также узнайте, как они обрабатывают нулевые и пустые строки при удалении последнего символа из строки.
Строка str = "Привет, мир!";//Использование регулярных выраженийСтрока newStr = str.replaceAll(".$", "");//Использование метода подстрокиСтрока newStr = str.substring(0, str.length() - 1);//Использование StringBufferStringBuffer stringBuffer = new StringBuffer(str);Строка newStr = stringBuffer.deleteCharAt(stringBuffer.length() - 1);//Используем Apache Commons Lang — НАИБОЛЕЕ ЧИТАЕМЫЙСтрока newStr = StringUtils.chop(str);
1. Удалить последний символ с помощью StringBuffer.deleteCahrAt()
Метод deleteCharAt() является членом класса StringBuffer, который удаляет символ по указанному индексу.
public StringBuffer deleteCharAt(int index)
В следующем примере у нас есть строка «Hello, World!», и мы используем метод StringBuffer.deleteCharAt() для удаления последнего символа.
String str = "Hello, World!";StringBuffer stringBuffer = new StringBuffer(str);if(stringBuffer.length() > 0) {stringBuffer.deleteCharAt(stringBuffer.length() - 1);}System.out.println(stringBuffer.toString()); // Output: Hello, World
2. Удалить последний символ с помощью String.substring()
Это самый простой метод. Метод substring() возвращает подстроку между начальным и конечным индексами.
Обратите внимание, что этот метод не проверяет наличие пустой строки. Он также не проверяет длину строки, поэтому если мы передадим пустую строку, то можем получить IndexOutOfBoundsException. Лучше написать собственный метод обработки этих двух случаев. Не стесняйтесь настраивать метод и обрабатывать больше случаев, таких как непечатаемые символы.
public static String removeLastChar(String s) {return(s == null || s.length() == 0)? null:(s.substring(0, s.length() - 1));}
Теперь мы можем использовать этот метод с любым типом String.
newStr = removeLastChar(null); //returns nullnewStr = removeLastChar(""); //returns nullnewStr = removeLastChar("a"); //returns "" empty stringnewStr = removeLastChar("abcd"); //returns "abc"
3. Заменить последний символ пустой строкой с помощью Regex
Регулярное выражение можно использовать для поиска последнего символа строки, а затем заменить его пустым пространством, фактически удалив последний символ из выходной строки.
String str = "Hello, World!";String newStr = str.replaceAll(".$", "");
4. Удалить последний символ с помощью StringUtils.chop()
Класс StringUtils является частью библиотеки Apache Commons Lang, поэтому добавьте его, если вы еще этого не сделали.
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>
StringUtils.chop() возвращает новую строку, последний символ которой был удален. Эта техника небезопасна и обрабатывает также пустые строки.
Также обратите внимание, что если строка заканчивается на \r\n, то удаляются оба символа.
newStr = StringUtils.chop(null); //returns nullnewStr = StringUtils.chop(""); //returns "" empty stringnewStr = StringUtils.chop("a"); //returns "" empty stringnewStr = StringUtils.chop("abcd"); //returns "abc"
5. Удалить последний символ, если значение символа совпадает
Могут быть случаи, когда мы хотим удалить последний символ, только если он совпадает или не совпадает с каким-либо определенным символом. Мы можем добиться этого, используя класс CharMatcher Guava.
Включите гуаву в проект, если вы этого еще не сделали.
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version></dependency>
Используйте класс CharMatcher следующим образом, чтобы удалить последний символ строки, если он соответствует заданному условию.
String string = "abcdE";String newStr = CharMatcher.is('E').trimTrailingFrom(s);
Мы также можем использовать CharMatcher для удаления ненужных пробелов.
String newStr = CharMatcher.breakingWhitespace().trimTrailingFrom(s);
6. Заключение
В этом коротком уроке Java мы изучили несколько методов удаления последнего символа из строки, используя индексы или только критерии соответствия. Мы увидели, как эти методы обрабатывают нулевые и пустые значения.