在replaceAll()方法中对替换字符串调用replace

时间:2018-09-06 15:36:47

标签: java regex text-processing

似乎这应该工作,但是不行。我试图在传递给replaceAll()方法的替换String上调用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()的文档,但我仍然不知道为什么这行不通。谁能帮我理解?

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

2 个答案:

答案 0 :(得分:1)

您正在对“ $ 1”调用.replace,而不是replaceAll的结果。合上replaceAll调用的括号,然后在其上调用.replace方法。

尝试

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

答案 1 :(得分:0)

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

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