我正在从数据库中检索数据,其中该字段包含带有HTML数据的String.我想替换所有的双引号,使得它可以被用于parseJSON
的jQuery的.
使用Java,我试图用...替换引号
details.replaceAll("\"","\\\"");
//details.replaceAll("\"",""e;"); details.replaceAll("\"",""");
Run Code Online (Sandbox Code Playgroud)
结果字符串未显示所需的更改.O'Reilly 文章规定使用Apache字符串工具.还有别的办法吗?
是否有正则表达式或我可以使用的东西?
aio*_*obe 96
这是如何做
String details = "Hello \"world\"!";
details = details.replace("\"","\\\"");
System.out.println(details); // Hello \"world\"!
Run Code Online (Sandbox Code Playgroud)
请注意,字符串是不可变的,因此仅仅这样做是不够的details.replace("\"","\\\"")
.您必须将变量重新分配details
给结果字符串.
运用
details = details.replaceAll("\"",""e;");
Run Code Online (Sandbox Code Playgroud)
相反,结果
Hello "e;world"e;!
Run Code Online (Sandbox Code Playgroud)
小智 30
不一定是这样的:
.replaceAll("\"","\\\\\"")
Run Code Online (Sandbox Code Playgroud)
替换字符串中的五个反斜杠.
小智 5
我认为正则表达式在这种情况下有点过分.如果您只想删除字符串中的所有引号,我会使用以下代码:
details = details.replace("\"", "");
Run Code Online (Sandbox Code Playgroud)
为了使其在 JSON 中工作,您需要转义更多字符。
myString.replace("\\", "\\\\")
.replace("\"", "\\\"")
.replace("\r", "\\r")
.replace("\n", "\\n")
Run Code Online (Sandbox Code Playgroud)
如果你想能够使用json2.js
它来解析它那么你还需要转义
.replace("\u2028", "\\u2028")
.replace("\u2029", "\\u2029")
Run Code Online (Sandbox Code Playgroud)
JSON 允许使用带引号的字符串,但 JavaScript 不允许。