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

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

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


当前回答

用这个:

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

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

其他回答

你可以做我 hereString = hereString.replace(hereString. chatat (hereString.length() - 1),' whitespeace');

删除'xxx'的最后一次出现:

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

删除'xxx'的最后一次出现(如果它是最后一次):

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

你可以替换你想要的“xxx”,但要注意特殊字符

从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"
}

既然我们讨论的是一个主题,我们也可以使用正则表达式

"aaabcd".replaceFirst(".$",""); //=> aaabc  

容易Peasy:

StringBuilder sb= new StringBuilder();
for(Entry<String,String> entry : map.entrySet()) {
        sb.append(entry.getKey() + "_" + entry.getValue() + "|");
}
String requiredString = sb.substring(0, sb.length() - 1);