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

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

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


当前回答

如何在最后的递归中创建char:

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"

其他回答

 string = string.substring(0, (string.length() - 1));

我在我的代码中使用这个,它很容易和简单。 它只在字符串为> 0时起作用。 我把它连接到一个按钮和下面的if语句

if (string.length() > 0) {
    string = string.substring(0, (string.length() - 1));
}

只需像这样替换“if”的条件:

if(a.substring(a.length()-1).equals("x"))'

这将对你有用。

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选项。

所描述的问题和提出的解决方案有时涉及到移除分隔器。如果这是你的情况,那么看看Apache Commons StringUtils,它有一个叫做removeEnd的方法,非常优雅。

例子:

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

会导致: "string 1|string 2|string 3"

用这个:

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

    string= string.substring(0, string.length() - 1);
 }