我正在从数据库中检索数据,其中该字段包含带有HTML数据的String。我想替换所有双引号,以便它可以用于{em> jQuery 的parseJSON
。
使用Java,我试图用..替换引号。
details.replaceAll("\"","\\\"");
//details.replaceAll("\"",""e;"); details.replaceAll("\"",""");
结果字符串未显示所需的更改。 O'Reilly article规定使用Apache字符串工具。还有其他办法吗?
是否有正则表达式或我可以使用的东西?
答案 0 :(得分:88)
以下是
String details = "Hello \"world\"!";
details = details.replace("\"","\\\"");
System.out.println(details); // Hello \"world\"!
请注意,字符串为immutable,因此仅仅执行details.replace("\"","\\\"")
是不够的。您必须将变量details
重新分配给结果字符串。
使用
details = details.replaceAll("\"",""e;");
相反,结果
Hello "e;world"e;!
答案 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");