我想从字符串中删除最后一个字符。我试过这样做:

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,并将最后一个字母替换为空(删除它),但每次我运行程序时,它都会删除与最后一个字母相同的中间字母。

例如,单词是“仰慕者”;在我运行这个方法之后,我得到了“钦佩”。我想让它回复“钦佩”这个词。


当前回答

从Java 8开始,你可以使用Optional来避免空指针异常,并使用函数式编程:

public String removeLastCharacter(String string) {
    return Optional.ofNullable(string)
        .filter(str -> !str.isEmpty() && !string.isBlank())
        .map(str -> str.substring(0, str.length() - 1))
        .orElse(""); // Should be another value that need if the {@param: string} is "null"
}

其他回答

 // creating StringBuilder
 StringBuilder builder = new StringBuilder(requestString);
 // removing last character from String
 builder.deleteCharAt(requestString.length() - 1);

如果你想在结尾删除特定的字符,你可以使用:

myString.removeSuffix("x")

这是删除字符串中最后一个字符的一种方法:

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

如果你有特殊的性格喜欢;在json中只需使用string .replace(";", ""),否则你必须重写字符串中的所有字符减去最后一个。

if (str.endsWith("x")) {
  return str.substring(0, str.length() - 1);
}
return str;

例如,单词是“仰慕者”;在我运行这个方法之后,我得到了“钦佩”。我想让它回复“钦佩”这个词。

以防你想学英语单词

词干化是将屈折变化的(有时是派生的)单词还原到词干、词根或词根形式的过程,通常是书面的单词形式。 ... 例如,英语的词干器应该识别基于词根“cat”的字符串“cats”(可能还有“catlike”、“catty”等),以及基于“stem”的字符串“stemmer”、“stem”、“”。词干算法将单词“fishing”、“fishing”、“fish”和“fisher”简化为词根单词“fish”。

Lucene stemmer的区别:EnglishStemmer, PorterStemmer, LovinsStemmer概述了一些Java选项。