【问题标题】:Remove characters from a String in Java从 Java 中的字符串中删除字符
【发布时间】:2011-08-07 10:14:45
【问题描述】:

我正在尝试使用以下代码删除文件名的 .xml 部分:

String id = fileR.getName();
              id.replace(".xml", "");
              idList.add(id);

问题是它没有删除它,我不知道为什么它不会删除目标文本。

编辑:实际上我意识到替换功能找不到.xml,所以我想问题是,我该如何摆脱那些最后4个字?

这是传入的字符串:

0b14d501a594442a01c6859541bcb3e8164d183d32937b851835442f69d5c94e.xml

谢谢,

【问题讨论】:

标签: java string


【解决方案1】:

java 中的字符串是不可变的。这意味着您需要创建一个新字符串或覆盖旧字符串以实现所需的效果:

id = id.replace(".xml", "");

【讨论】:

  • replace接受正则表达式,因此您不应该转义.replaceAll 确实接受正则表达式。
【解决方案2】:

你不能用吗

id = id.substring(0, id.length()-4);

当然还有埃里​​克所说的。

【讨论】:

  • 这假定他希望.xml 位于字符串的末尾(可能,但未说明)。
  • 这就是我提出这个问题的原因^.^ 但是,当然,Eric 的回答似乎更漂亮。
【解决方案3】:
String id = id.substring(0,id.length()-4)

【讨论】:

    【解决方案4】:

    字符串是不可变的,因此当您操作它们时,您需要将结果分配给字符串:

    String id = fileR.getName();
    id = id.replace(".xml", ""); // this is the key line
    idList.add(id);
    

    【讨论】:

      【解决方案5】:

      Strings 是不可变的。因此String.replace() 不会修改id,它会返回一个具有适当值的新String。因此你想使用id = id.replace(".xml", "");

      【讨论】:

        【解决方案6】:

        仅当令牌位于字符串末尾时才会安全删除。

        StringUtils.removeEnd(string, ".xml");
        

        Apache StringUtils 函数为 null、空且不匹配

        【讨论】:

        • 8 年后..... StringUtils 也来自 Apache?不是本机 Java... 可能应该指定
        • 添加了文档链接。应该暗示,native 不包含任何 Util。这是一个比其他任何一个都更安全、更完整的答案
        • 并不是说这不是暗示...我是说它没有那么有用,因为您没有指定在哪里找到该功能...但是文档链接肯定会清除起来?
        【解决方案7】:

        Kotlin 解决方案

        Kotlin 有一个内置函数,removeSuffix (Documentation)

        var text = "filename.xml"
        text = text.removeSuffix(".xml") // "filename"
        

        如果字符串中不存在后缀,则返回原来的

        var text = "not_a_filename"
        text = text.removeSuffix(".xml") // "not_a_filename"
        

        您也可以查看相似的removePrefixremoveSurrounding

        【讨论】:

          【解决方案8】:

          Java 字符串是不可变的。但是你有很多选择:

          你可以使用:

          改为 StringBuilder 类,因此您可以删除所需的所有内容并控制字符串。

          替换方法。

          您实际上可以使用循环 £:

          【讨论】:

            猜你喜欢
            • 2010-10-10
            • 1970-01-01
            • 2017-05-21
            • 2013-08-20
            • 1970-01-01
            • 2012-10-21
            • 2015-05-13
            • 2022-06-15
            • 2016-07-26
            相关资源
            最近更新 更多