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

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

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


当前回答

// Remove n last characters  
// System.out.println(removeLast("Hello!!!333",3));

public String removeLast(String mes, int n) {
    return mes != null && !mes.isEmpty() && mes.length()>n
         ? mes.substring(0, mes.length()-n): mes;
}

// Leave substring before character/string  
// System.out.println(leaveBeforeChar("Hello!!!123", "1"));

public String leaveBeforeChar(String mes, String last) {
    return mes != null && !mes.isEmpty() && mes.lastIndexOf(last)!=-1
         ? mes.substring(0, mes.lastIndexOf(last)): mes;
}

其他回答

所描述的问题和提出的解决方案有时涉及到移除分隔器。如果这是你的情况,那么看看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);
 }

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

myString.removeSuffix("x")

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

为什么不只是一条航线呢?

public static String removeLastChar(String str) {
    return removeLastChars(str, 1);
}

public static String removeLastChars(String str, int chars) {
    return str.substring(0, str.length() - chars);
}

完整代码

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) + "==");
    }
    
    public static String removeLastChar(String str) {
        return removeLastChars(str, 1);
    }

    public static String removeLastChars(String str, int chars) {
        return str.substring(0, str.length() - chars);
    }
}

Demo