Как удалить последний символ из строки? - PullRequest
418 голосов
/ 16 сентября 2011

Я хочу удалить последний символ из строки.Я попытался сделать это:

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 и замена последней буквы ничем (удаление ее), но каждый раз, когда я запускаю программу, она удаляет средние буквы, которыетак же, как и последняя буква.

Например, слово «поклонник»;после запуска метода я получаю "восхищение".Я хочу вернуть слово восхищаться.

Ответы [ 26 ]

0 голосов
/ 08 июня 2018

Вот ответ, который работает с кодовыми точками за пределами базовой многоязычной плоскости (Java 8+).

Использование потоков:

public String method(String str) {
    return str.codePoints()
            .limit(str.codePoints().count() - 1)
            .mapToObj(i->new String(Character.toChars(i)))
            .collect(Collectors.joining());
}

Может быть, более эффективно:

public String method(String str) {
    return str.isEmpty()? "": str.substring(0, str.length() - Character.charCount(str.codePointBefore(str.length())));
}
0 голосов
/ 26 мая 2018

Как сделать символ в рекурсии в конце:

public static String  removeChar(String word, char charToRemove)
    {
        String char_toremove=Character.toString(charToRemove);
        for(int i = 0; i < word.length(); i++)
        {
            if(word.charAt(i) == charToRemove)
            {
                String newWord = word.substring(0, i) + word.substring(i + 1);
                return removeChar(newWord,charToRemove);
            }
        }
        System.out.println(word);
        return word;
    }

для примера:

removeChar ("hello world, let's go!",'l') → "heo word, et's go!llll"
removeChar("you should not go",'o') → "yu shuld nt goooo"
0 голосов
/ 08 ноября 2017

Мне пришлось написать код для аналогичной проблемы.Один из способов, которым я смог ее решить, - это использовать рекурсивный метод кодирования.

static String removeChar(String word, char charToRemove)
{
    for(int i = 0; i < word.lenght(); i++)
    {
        if(word.charAt(i) == charToRemove)
        {
            String newWord = word.substring(0, i) + word.substring(i + 1);
            return removeChar(newWord, charToRemove);
        }
    }

    return word;
}

Большая часть кода, который я видел по этой теме, не использует рекурсию, поэтому, надеюсь, я смогу помочь вам или кому-то, ктоимеет ту же проблему.

0 голосов
/ 31 августа 2016

Это единственный способ удалить последний символ в строке:

Scanner in = new Scanner(System.in);
String s = in.nextLine();
char array[] = s.toCharArray();
int l = array.length;
for (int i = 0; i < l-1; i++) {
    System.out.print(array[i]);
}
0 голосов
/ 07 февраля 2019

вы можете сделать это здесьString = hereString.replace (hereString.chatAt (hereString.length () - 1), 'whitespeace');

0 голосов
/ 31 июля 2015

если у вас есть специальный символ, как;в json просто используйте String.replace (";", ""), в противном случае вы должны переписать все символы в строке минус последний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...