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

587 голосов
/ 16 сентября 2011

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;
}
219 голосов
/ 22 декабря 2012

Почему бы не один лайнер?

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);
    }
}

Демо

83 голосов
/ 27 августа 2013

Поскольку мы работаем над темой, можно использовать и регулярные выражения

"aaabcd".replaceFirst(".$",""); //=> aaabc  
68 голосов
/ 09 апреля 2013

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

Пример:

StringUtils.removeEnd("string 1|string 2|string 3|", "|");

приведет к: "строка 1 | строка 2 | строка 3"

44 голосов
/ 16 сентября 2011
public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}
30 голосов
/ 11 декабря 2013

Не пытайтесь заново изобретать колесо, в то время как другие уже написали библиотеки для работы со строками: org.apache.commons.lang3.StringUtils.chop()

18 голосов
/ 27 ноября 2013

Используйте это:

 if(string.endsWith("x")) {

    string= string.substring(0, string.length() - 1);
 }
11 голосов
/ 20 мая 2013
if (str.endsWith("x")) {
  return str.substring(0, str.length() - 1);
}
return str;

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

В случае, если вы пытаетесь основа английские слова

Стемминг - это процесс, позволяющий сводить слова с перегибом (или иногда производные) к их основам, основам или форме корня - обычно письменной форме слова.

...

Так, например, в английском языке для обозначения слова «кошки» следует указать строку «кошки» (и, возможно, «кошачьи», «кошачий» и т. Д.), Основанную на корне «кошка» и «стволовый», «стволовый», «». стволовые ", как на основе" ствола ". Алгоритм stemming сводит слова «рыболовство», «выловленный», «рыба» и «рыболов» к корневому слову «рыба».

Разница между стеммерами Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer описывает некоторые параметры Java.

9 голосов
/ 16 декабря 2016

Что касается читабельности, я считаю это наиболее кратким

StringUtils.substring("string", 0, -1);

Отрицательные индексы можно использовать в утилите Apache StringUtils.Все отрицательные числа обрабатываются со смещением от конца строки.

4 голосов
/ 11 января 2014

удаляет последнее вхождение 'xxx':

    System.out.println("aaa xxx aaa xxx ".replaceAll("xxx([^xxx]*)$", "$1"));

удаляет последнее вхождение 'xxx', если оно последнее:

    System.out.println("aaa xxx aaa  ".replaceAll("xxx\\s*$", ""));

, вы можете заменить 'xxx'на то, что вы хотите, но остерегайтесь специальных символов

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