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

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

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


当前回答

如果我们想删除给定文件的文件扩展名,

**示例代码

 public static String removeNCharactersFromLast(String str,int n){
    if (str != null && (str.length() > 0)) {
        return str.substring(0, str.length() - n);
    }

    return "";

}

其他回答

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

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

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

我不得不为类似的问题编写代码。我解决这个问题的一种方法是用递归的编码方法。

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

我所见过的关于这个主题的大多数代码都没有使用递归,所以希望我可以帮助您或有相同问题的人。

public String removeLastCharacter(String str){
       String result = null;
        if ((str != null) && (str.length() > 0)) {
          return str.substring(0, str.length() - 1);
        }
        else{
            return "";
        }

}

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

myString.removeSuffix("x")

使用StringUtils.Chop(Str),它也会处理null和空字符串,你需要导入common-io:

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.8.0</version>
    </dependency>