Я хочу удалить последний символ из строки. Я пытался сделать это:
public String method(String str) {
if (str.charAt(str.length()-1)=='x'){
str = str.replace(str.substring(str.length()-1), "");
return str;
} else{
return str;
}
}
Получаем длину строки - 1 и заменяем последнюю букву ничем (удаляя ее), но каждый раз, когда я запускаю программу, она удаляет средние буквы, которые совпадают с последней буквой.
Например, слово «поклонник»; после запуска метода я получаю «восхищение». Я хочу вернуть слово восхищаться.
null != str &&
в начале проверки.str != null &&
!if (str = NULL)
что не только всегда будет иметь значение false (NULL == 0 == false), но также назначит значение,str
которое, скорее всего, не то, что вы хотели сделать. Однако вы не могли написать,if (NULL = str)
потому что NULL не является переменной и не может быть назначен. Таким образом, безопаснее ставить NULL слева. Это не проблема в Java, хотя.Почему не только один лайнер?
Полный код
демонстрация
источник
return str.substring(0,str.length()-1);
улучшениемПоскольку мы находимся на тему, можно использовать регулярные выражения тоже
источник
Описанная проблема и предлагаемые решения иногда относятся к удалению разделителей. Если это ваш случай, взгляните на Apache Commons StringUtils, у него есть метод removeEnd который очень элегантен.
Пример:
Результатом будет: «строка 1 | строка 2 | строка 3»
источник
источник
Не пытайтесь заново изобретать колесо, в то время как другие уже написали библиотеки для работы со строками:
org.apache.commons.lang3.StringUtils.chop()
источник
Использовать этот:
источник
Если вы пытаетесь остановить английские слова
Различия между стеммерами Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer выделяют некоторые варианты Java.
источник
В Kotlin вы можете использовать метод dropLast () класса string. Он удалит указанное число из строки, вернет новую строку
источник
Что касается читабельности, я считаю это наиболее кратким
Отрицательные индексы можно использовать в утилите Apache StringUtils. Все отрицательные числа обрабатываются со смещением от конца строки.
источник
удаляет последнее вхождение 'xxx':
удаляет последнее вхождение 'xxx', если оно последнее:
Вы можете заменить «ххх» на то, что вы хотите, но будьте осторожны с особыми символами
источник
источник
источник
Посмотрите на класс StringBuilder:
источник
источник
Однострочный ответ (просто забавная альтернатива - не пытайтесь делать это дома, и отличные ответы уже даны):
источник
Почему бы не использовать escape-последовательность ...!
Жизнь теперь намного проще. XD! Читаемый однострочный
источник
Большинство ответов здесь забыли о суррогатных парах .
Например, символ 𝕫 (кодовая точка U + 1D56B) не помещается в один
char
, поэтому для того, чтобы его можно было представить, он должен образовать суррогатную пару из двух символов.Если кто-то просто применяет принятый в настоящее время ответ (используя
str.substring(0, str.length() - 1)
, то сращивает суррогатную пару, что приводит к неожиданным результатам.Также следует включить проверку, является ли последний символ суррогатной парой:
источник
IndexOutOfBoundsException
? (например, возможно ли, что Character.isSurrogate вернет true, когда перед ним фактически нет символа, чтоstr.length()-cut
отрицательно).2
наMath.min(2, str.length())
.Java 8
Выход: test-ab
источник
Я использую это в своем коде, это легко и просто. это работает только тогда, когда строка> 0. Я подключен к кнопке и внутри следующего оператора if
источник
источник
если у вас есть специальный символ, как; в json просто используйте String.replace (";", ""), в противном случае вы должны переписать все символы в строке минус последний.
источник
Как сделать символ в рекурсии в конце:
например:
источник
Вот ответ, который работает с кодовыми точками вне Базовой многоязычной плоскости (Java 8+).
Использование потоков:
Может быть, более эффективно:
источник
Мы можем использовать подстроку. Вот пример,
источник
просто замените условие «если» так:
это поможет вам.
источник
Предположим, что общая длина моей строки = 24. Я хочу вырезать последний символ после позиции 14 до конца, то есть хочу, чтобы начало 14 было там. Поэтому я применяю следующее решение.
источник
Мне пришлось написать код для аналогичной проблемы. Один из способов, которым я смог ее решить, - это рекурсивный метод кодирования.
Большая часть кода, который я видел по этой теме, не использует рекурсию, поэтому, надеюсь, я смогу помочь вам или кому-то, кто имеет такую же проблему.
источник
Очень просто:
источник
Это единственный способ удалить последний символ в строке:
источник