我有一个字符串值来自必须放入JSON的数据库,但该值可以包含单引号和双引号。听起来很简单,对吧?那么,显然不是在Java 1.4.2中。不要让我开始为什么它必须是1.4.2,我从另一个开发人员那里继承了这一点,并且由于无法控制的因素,我们无法更新此项目。 :)Java 1.4 String.replaceAll单引号问题
所以,我已经尝试了所有的这些(和许多其他人只是看到的结果):
"sample user's string".replaceAll("'", "\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\\\'") // returns "sample user\\'s string"
"sample user's string".replaceAll("'", "%%") // returns "sample user%%s string"
我要的就是sample user\'s string,我究竟做错了什么?太糟糕了1.4.2没有String.replace(String,String)函数。
编辑:我们正在使用json-simple JSON库,我正在查看所得JSON字符串中上述命令的输出。我添加了额外的调试信息来查看JSON获取输出之前的值,它看起来像上面的命令真的在工作,但json-simple库正在剥离转义字符。
所以,我所看到的是:
"sample user's string".replaceAll("'", "\\\\'") // sample user\'s string
myJSONObject.put("value", "sample user's string".replaceAll("'", "\\\\'")) // sample user\\'s string"
myJSONObject.put("value", "sample user's string") // sample user's string
所以它看起来像库不太做的工作如预期。是否有人使用json-simple知道此解决方法?
-09-17
Kettch19