【问题标题】:Calling replace on replacement String in replaceAll() method在 replaceAll() 方法中对替换字符串调用替换
【发布时间】:2019-02-11 22:20:37
【问题描述】:

这似乎应该可以工作,但它没有......我正在尝试在传递给 replaceAll() 方法的替换字符串上调用 replace() 方法。

例如,我尝试使用以下代码去掉双引号内的任何逗号:

String string = "\"Thu, Sep 6, 2018 10:00 AM\"";
System.out.println(string.replaceAll("(\"[^\"]+\")", "$1".replace(",", "")));

结果是相同的字符串:"Thu, Sep 6, 2018 10:00 AM",而我希望得到"Thu Sep 6 2018 10:00 AM"

我查看了 String.replaceAll() 和 Matcher.replaceAll() 的文档,但我仍然无法弄清楚为什么这不起作用。谁能帮我理解一下?

让我强调一下,我很想知道为什么这不起作用 - 我对解决方案不感兴趣,我已经找到了替代方案。谢谢。

【问题讨论】:

    标签: java regex text-processing


    【解决方案1】:

    您在“$1”上调用 .replace,而不是 replaceAll 的结果。关闭 replaceAll 调用的括号并在其上调用 .replace 方法。

    试试

    System.out.println(string.replaceAll("(\"[^\"]+\")", "$1").replace(",", ""))

    【讨论】:

      【解决方案2】:

      只需更改右括号的位置即可:

      System.out.println(string.replaceAll("(\"[^\"]+\")", "$1").replace(",", ""))
      

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 1970-01-01
        • 2013-02-16
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 2012-09-25
        相关资源
        最近更新 更多