问答中心分类: JAVA如何从字符串中删除最后一个字符?
0
匿名用户 提问 1月 前

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

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并用零替换最后一个字母(删除它),但每次运行程序时,它都会删除与最后一个字母相同的中间字母。
例如,单词是“仰慕者”;运行该方法后,我得到“赞赏”我想用它来回报佩服这个词。

29 Answers
0
Fahim Parkar 回答 1月 前

为什么不只是一个班轮?

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

演示

KDjava 回复 1月 前

应考虑检查null和空字符串@BobBobBob版本更好

Fahim Parkar 回复 1月 前

@KDjava:考虑到传递的是有效字符串,上述内容是有效的。否则,我将不得不添加try-catch块来检查字符串是否正确。。。

shareef 回复 1月 前

我在之前添加了空字符串检查return str.substring(0,str.length()-1);as改进

CrandellWS 回复 1月 前

谢谢,此源正在使用中主旨github。com/CrandellWS/E254A215C54AA4BE0400A3511A3F730

Ash18 回复 1月 前

@法辛帕卡:因为最后一个字符可能不是我们要删除的字符。但根据问题,你的答案是正确的

0
iddqd 回答 1月 前

因为我们在讨论一个主题,所以也可以使用正则表达式

"aaabcd".replaceFirst(".$",""); //=> aaabc
Julien 回复 1月 前

很好的方法,当您想要/需要准确定义要从字符串末尾修剪的内容时,而不仅仅是X或任何字符

0
Mart135688 回答 1月 前

所描述的问题和建议的解决方案有时与拆卸分离器有关。如果这是您的情况,那么看看Apache Commons StringUtils,它有一个名为删除非常优雅。
例子:

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

将导致:

Tony H. 回复 1月 前

下面是上述StringUtils的JAR:平民阿帕奇。org/proper/commons-lang/download\u lang.cgi

0
BobBobBob 回答 1月 前
public String removeLastChar(String s) {
    if (s == null || s.length() == 0) {
        return s;
    }
    return s.substring(0, s.length()-1);
}
Robert Allan Hennigan Leahy 回复 1月 前

如果最后一个字符是高/低代理项对怎么办?

Patrick Parker 回复 1月 前

@RobertAllanHenniganLeahy我发布了答复这就解决了这个问题。

0
membersound 回答 1月 前

当其他人已经编写了用于执行字符串操作的库时,不要试图重新发明轮子:org.apache.commons.lang3.StringUtils.chop()

iaforek 回复 1月 前

如果只想删除最后一个字符,这是最好的答案!

Mikkel Løkke 回复 1月 前

不,不是,因为“使用Java”是对Kotlin问题的糟糕回答。

membersound 回复 1月 前

@MikkelLøkke我不知道,但这个问题无论如何都不是Kotlin的问题??