java为什么不使用字符串。replaceAll()需要为“character”进行这么多转义吗?
如果我有字符串a"b"c"
,但我想得到a\"b\"c\"
,我自然会写
String t = "a\"b\"c\"";
t = t.replaceAll("\"", "\\\"");
但是,这会产生相同的字符串a"b"c"
。正确的方法是
t.replaceAll("\"", "\\\\\"");
为什么?
你可以在下面搜索框中键入要查询的问题!
如果我有字符串a"b"c"
,但我想得到a\"b\"c\"
,我自然会写
String t = "a\"b\"c\"";
t = t.replaceAll("\"", "\\\"");
但是,这会产生相同的字符串a"b"c"
。正确的方法是
t.replaceAll("\"", "\\\\\"");
为什么?
# 1 楼答案
replaceAll
对模式和替换都使用正则表达式,这两种方法都需要转义反斜杠。因此,第二个参数所需的替换模式是:现在因为Java字符串文本中的
\
和"
也需要转义,这意味着这些字符中的每一个都需要额外的反斜杠。添加引号,您将获得:这就是你从你的资料中得到的
如果您只使用
String.replace
,而不使用正则表达式,则会更简单。这样,您只需将此字符串(而不是字符串文字)作为第二个参数:转义并转换为字符串文字后,将变成:
这仍然不是很好,但至少更好
另一种方法是使用} 一起使用:
replaceAll
但与^{就我个人而言,我只会使用
replace()
。毕竟,您不需要正则表达式替换