Я хочу удалить последний символ из строки. Я пробовал делать это:
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 и заменить последнюю букву на ничто (удалить ее), но каждый раз, когда я запускаю программу, она удаляет средние буквы, которые совпадают с последней буквой.
Например, слово "admirer"; после запуска метода я получаю "admie." Я хочу, чтобы он возвращал слово admire.
replace
заменит все экземпляры буквы. Все, что вам нужно сделать, это использовать substring()
:
public String method(String str) {
if (str != null && str.length() > 0 && str.charAt(str.length() - 1) == 'x') {
str = str.substring(0, str.length() - 1);
}
return str;
}
Почему не один лайнер?
private static String removeLastChar(String str) {
return str.substring(0, str.length() - 1);
}
Полный код
import java.util.*;
import java.lang.*;
public class Main {
public static void main (String[] args) throws java.lang.Exception {
String s1 = "Remove Last CharacterY";
String s2 = "Remove Last Character2";
System.out.println("After removing s1==" + removeLastChar(s1) + "==");
System.out.println("After removing s2==" + removeLastChar(s2) + "==");
}
private static String removeLastChar(String str) {
return str.substring(0, str.length() - 1);
}
}
Описанные проблемы и предлагаемые решения иногда связаны с удалением сепараторы. Если это ваш случай, то обратите внимание на Апач Викискладе StringUtils, он имеет метод, называемый removeEnd, который является очень элегантным.
Пример:
StringUtils.removeEnd("string 1|string 2|string 3|", "|");
В результате: на "строка 1|строка 2|строку 3 и"
Дон'т пытаются изобрести велосипед, в то время как другие уже написаны библиотеки для выполнения операций со строками:
орг."Апач".общин.lang3.StringUtils.ЧОП()
if (str.endsWith("x")) {
return str.substring(0, str.length() - 1);
}
return str;
например, слово есть "; после того, как я запустить метод, я понимаю, что " поклонник" у;admie." Я хочу вернуть слову восхищаться.
В случае, если вы'вновь пытается стебля английских слов
морфологический поиск-это процесс сокращения флективный (или производного) слова, чтобы их стебель, основание или корень форма—как правило, в письменном виде слова.
...
парадигматический модуль для английского, например, должны определить строку, на "кошках", У (и, возможно, с "кошачьи" В, С "злобный" и т. д.) как на основе корня "кошка", и "парадигматический модуль" В, С "вытекающими" В, С "вытекает" и основываясь на "стержень" и. Забойный алгоритм сокращает слова, что "Рыбалка" В, С "ловили" В, С "рыбой", и на "Фишер", чтобы корень слова, как "рыба" по.
https://stackoverflow.com/questions/5068790/difference-between-lucene-stemmers-englishstemmer-porterstemmer-lovinsstemmer описаны некоторые параметры Java.
Что касается читабельности, я считаю, это будет самым кратким
StringUtils.substring("string", 0, -1);
Отрицательные индексы могут быть использованы в Apache'ы StringUtils полезности. Все отрицательные числа обрабатываются от смещения от конца строки.
В Котлин вы можете использовать dropLast() метод класса String. Он упадет данное число из строки, возвращают новую строку
var string1 = "Some Text"
string1 = string1.dropLast(1)
удаляет последний наступлении 'ХХХ':
System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));
удаляет последнего вхождения 'ХХХ' Если это последнее:
System.out.println("aaa xxx aaa ".replaceAll("xxx\\s*$", ""));
вы можете заменить 'ХХХ' на то, что вы хотите, но смотреть на специальные символы
public String removeLastChar(String s) {
if (!Util.isEmpty(s)) {
s = s.substring(0, s.length()-1);
}
return s;
}
// creating StringBuilder
StringBuilder builder = new StringBuilder(requestString);
// removing last character from String
builder.deleteCharAt(requestString.length() - 1);
На одной строчке ответа (просто смешно альтернатива - не пытайтесь повторить это дома, и отличные ответы уже даны):
public String removeLastChar(String s){return (s != null && s.length() != 0) ? s.substring(0, s.length() - 1): s;}
Почему бы не использовать в <а href="и https://docs.oracle.com/javase/tutorial/java/data/characters.html">escape-последовательность</а> ... !
System.out.println(str + '\b');
Жизнь теперь намного легче . ХD ! ~ Читабельный один-лайнер
// Remove n last characters
// System.out.println(removeLast("Hello!!!333",3));
public String removeLast(String mes, int n) {
return mes != null && !mes.isEmpty() && mes.length()>n
? mes.substring(0, mes.length()-n): mes;
}
// Leave substring before character/string
// System.out.println(leaveBeforeChar("Hello!!!123", "1"));
public String leaveBeforeChar(String mes, String last) {
return mes != null && !mes.isEmpty() && mes.lastIndexOf(last)!=-1
? mes.substring(0, mes.lastIndexOf(last)): mes;
}
"String name" = "String name".substring(0, ("String name".length() - 1));
Я'м через это в мой код, это's легко и просто. он работает только в то время как строка И gt; 0. Он у меня подключен к кнопке и внутри следующих если заявление
if ("String name".length() > 0) {
"String name" = "String name".substring(0, ("String name".length() - 1));
}
<п>в Java 8</п>
import java.util.Optional;
public class Test
{
public static void main(String[] args) throws InterruptedException
{
System.out.println(removeLastChar("test-abc"));
}
public static String removeLastChar(String s) {
return Optional.ofNullable(s)
.filter(str -> str.length() != 0)
.map(str -> str.substring(0, str.length() - 1))
.orElse(s);
}
}
<п>выход : тест-АБ</п>
Большинство ответов здесь забыл суррогатные пары.
Например, символ 𝕫 (кодовыми точками от U+1D56B) не укладывается в один голец
, поэтому для того, чтобы быть представленными, она должна стать суррогатной пары из двух символов.
Если человек просто применяет в настоящее время принято отвечать (с помощью стр.подстрока(стр 0,.длина() - 1)`, одного соединения суррогатная пара, что приводит к неожиданным результатам.
Следует также проверить, является ли последний символ суррогатной пары:
public static String removeLastChar(String str) {
Objects.requireNonNull(str, "The string should not be null");
if (str.isEmpty()) {
return str;
}
char lastChar = str.charAt(str.length() - 1);
int cut = Character.isSurrogate(lastChar) ? 2 : 1;
return str.substring(0, str.length() - cut);
}