如何在java中用转义字符替换双引号?

时间:2015-10-21 13:40:35

标签: java string

我有这样的文字:

"fullName":"\"Some full name\"" .

如何将""替换为"?我试过这样:

text.replace("\"\"","\"");

但我得到"fullName":"\"Some full name\"。如您所见,只有第二个""已被"替换。

2 个答案:

答案 0 :(得分:4)

您应首先将\"替换为",然后将""替换为"

您可以通过链接一些String#replaceAll()来电来完成:

text = text.replaceAll("\\\"","\"").replaceAll("\"\"", "\"");
System.out.println(text);

将产生

"fullName":"Some full name"

答案 1 :(得分:1)

您可以通过匹配\"""\"

来实现
str = str.replaceAll("\\\\\"\"|\"\\\\\"", "\"");

这使用交替(通过|)。所有这些反斜杠的丑陋是由于java 正则表达式需要转义反斜杠(在java中,"\\"是一个字面反斜杠,所以"\\\\"是一个字面反斜杠在正则表达式中。)

一些测试代码:

String str = "\"fullName\":\"\\\"Some full name\\\"\"";
System.out.println(str); // just to make sure
System.out.println(str.replaceAll("\\\\\"\"|\"\\\\\"", "\""));

输出:

"fullName":"\"Some full name\""
"fullName":"Some full name"