replaceString中的所有双引号

我从数据库中检索字段包含string与HTML数据的数据。 我想要replace所有的双引号,以便它可以用于jQuery的 parseJSON

使用Java我试图取代报价使用..

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

已经尝试过,但结果string不显示更改。 O'reily文章规定了文章 apachestringutils。 有没有其他的方法?

任何正则expression式或东西?

就是这样

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

请注意,string是不可变的 ,因此仅仅执行details.replace("\"","\\\"")是不够的。 您必须将variablesdetails重新分配给结果string。


运用

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

相反,结果

 Hello &quote;world&quote;! 

那不是必须的:

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

replacestring中的5个反斜杠。

我认为在这种情况下正则expression式有点矫枉过正。 如果你只是想删除你的string中的所有引号,我会使用这个代码:

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

为了使它在JSON中工作,你需要避免更多的字符。

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

如果你想能够使用json2.jsparsing它,那么你也需要转义

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

哪些JSON允许内部引用的string,但哪些JavaScript没有。

我知道答案在这里已经被接受了,但我只是想分享一下当我试图逃避双引号和单引号时发现的东西。

这是我所做的:这个工作:)

逃避双引号

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

并逃避单引号

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

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

这是删除string中的双引号。

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

下面的正则expression式将适用于两个:

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