替换String中的所有双引号

时间:2011-03-19 12:11:01

标签: java regex

我正在从数据库中检索数据,其中该字段包含带有HTML数据的String。我想替换所有双引号,以便它可以用于{em> jQuery 的parseJSON

使用Java,我试图用..替换引号。

details.replaceAll("\"","\\\"");
  //details.replaceAll("\"","&quote;"); details.replaceAll("\"","&#34");

结果字符串未显示所需的更改。 O'Reilly article规定使用Apache字符串工具。还有其他办法吗?

是否有正则表达式或我可以使用的东西?

8 个答案:

答案 0 :(得分:88)

以下是

String details = "Hello \"world\"!";
details = details.replace("\"","\\\"");
System.out.println(details);               // Hello \"world\"!

请注意,字符串为immutable,因此仅仅执行details.replace("\"","\\\"")是不够的。您必须将变量details重新分配给结果字符串。


使用

details = details.replaceAll("\"","&quote;");

相反,结果

Hello &quote;world&quote;!

答案 1 :(得分:28)

不一定是:

.replaceAll("\"","\\\\\"")

替换字符串中的五个反斜杠。

答案 2 :(得分:6)

我认为正则表达式在这种情况下有点过分。如果您只想删除字符串中的所有引号,我会使用以下代码:

details = details.replace("\"", "");

答案 3 :(得分:4)

要使它在JSON中工作,你需要逃避更多的角色。

myString.replace("\\", "\\\\")
    .replace("\"", "\\\"")
    .replace("\r", "\\r")
    .replace("\n", "\\n")

如果您希望能够使用json2.js来解析它,那么您还需要转义

   .replace("\u2028", "\\u2028")
   .replace("\u2029", "\\u2029")

哪个JSON允许引用内部字符串,但JavaScript不允许。

答案 4 :(得分:3)

我知道这里已经接受了答案,但我只想分享我在试图逃避双引号和单引号时发现的内容。

这就是我所做的:这有效:)

转义双引号

    if(string.contains("\"")) {
        string = string.replaceAll("\"", "\\\\\"");
    }

并转义单引号

    if(string.contains("\'")) {
        string = string.replaceAll("\'", "\\\\'");
    }

PS:请注意上面使用的反斜杠数量。

答案 5 :(得分:2)

这是删除字符串中的双引号。

str1 = str.replace(/"/g, "");
alert(str1);

答案 6 :(得分:1)

String info = "Hello \"world\"!";
info = info.replace("\"", "\\\"");

String info1 = "Hello "world!";
info1 = info1.replace('"', '\"').replace("\"", "\\\"");

对于第二个字段info1,第一个将双引号替换为转义符。

答案 7 :(得分:0)

以下正则表达式适用于两者:

  text = text.replaceAll("('|\")", "\\\\$1");