gpt4 book ai didi

Java 1.4 String.replaceAll 单引号问题

转载 作者:行者123 更新时间:2023-12-02 00:12:28 25 4
gpt4 key购买 nike

我有一个来自数据库的字符串值,必须将其放入 JSON 中,但该值可以包含单引号和双引号。听起来很容易,对吧?嗯,显然 Java 1.4.2 中没有。不要让我开始解释为什么它必须是 1.4.2,我从另一个开发人员那里继承了这个,由于我无法控制的因素,我们还无法更新这个项目。 :)

所以,我已经尝试了所有这些(以及许多其他方法只是为了看看结果):

"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"

我想要的只是示例用户的字符串,我做错了什么?太糟糕了 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 的人是否知道解决此问题的方法?

最佳答案

我怀疑您正在自动为您转义反斜杠的上下文中查看字符串。你的倒数第二个样本应该没问题。例如:

public class Test {
public static void main(String[] args) {
System.out.println("sample user's string".replaceAll("'", "\\\\'"));
}
}

打印:

sample user\'s string

您没有说明在哪里查看该值,但如果它在调试器中,则很可能会加倍反斜杠,以将值呈现为 Java 文本中的值。

理想情况下,您不应该手动执行此类操作 - 它太容易出错。您应该使用一个 JSON 库来为您处理所有这些,因此您只需需要指定该值。

关于Java 1.4 String.replaceAll 单引号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466376/

25 4 0
文章推荐: java - SELECT * FROM BETWEEN AND