【问题标题】:Java string how to replace " with \" to escape JSON? [duplicate]Java字符串如何用“替换”来转义JSON? [复制]
【发布时间】:2015-04-22 14:24:34
【问题描述】:

我正在尝试用 Java 中的 \" 替换 ",但是所有的斜线都变得非常混乱。在Java中用\"替换"的正确方法是什么?

string.replaceAll("\"","\\"");

【问题讨论】:

  • string.replaceAll("\"","\\\\\"");
  • 为什么不直接使用 JSON 库呢?不要重新发明轮子,可能很糟糕......(这不是对您的编码能力的判断 - 只是除非您的主要任务是构建 JSON 库,否则您不太可能像那些其主要任务构建 JSON 库。)

标签: java regex replace escaping


【解决方案1】:

如果您要替换文字,请不要使用replaceAll,而是使用replace

原因是 replaceAll 使用正则表达式语法,这意味着某些字符将被特殊处理,例如 + * \ ( ) 并使它们成为文字,您需要对它们进行转义. replace 自动为你添加转义机制,所以不是

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

你可以写

replace("\"", "\\\"");

这有点不那么令人困惑。

【讨论】:

  • 这是 windows 特有的吗?
  • @Arun 不,此代码在所有操作系统中的行为都应该相同。
【解决方案2】:

尝试使用字符:

public void bsp(){
  //34 = " ; 92 = \
  String replace = "\"";
  String replace2 = "\\";
  text.replace(replace.charAt(0),replace2.charAt(0));
}

【讨论】:

  • 您应该先尝试这种方法,然后再将其发布为答案(提示:char 也可以视为整数)。
【解决方案3】:
string.replaceAll("\"", "\\\"");

让我们解释一下: "\"" :是一个带有\" 的字符串,一个转义的" char "\\\"": 是一个字符串,带有一个 \\ 一个转义的 \ char 和一个 \" 一个转义符 " char

【讨论】:

  • 这行不通。 \ 也是替换部分中的特殊字符,因此您还需要在那里转义它(就像在正则表达式中一样)。
猜你喜欢
  • 2016-05-27
  • 2016-06-27
  • 2012-05-03
  • 2012-07-09
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 2021-10-20
  • 2018-02-05
相关资源
最近更新 更多