Java String.replaceAll不';不要用转义引号替换引号
很难用转义的报价替换报价。我有一个字符串,它的值为'Foo'bar'foobar',我试图用转义引号替换bar周围的引号,但它不起作用。我快疯了Java String.replaceAll不';不要用转义引号替换引号,java,Java,很难用转义的报价替换报价。我有一个字符串,它的值为'Foo'bar'foobar',我试图用转义引号替换bar周围的引号,但它不起作用。我快疯了 s=s.replaceAll("\"","\\\""); 我希望s的值为'foo\'bar\'foobar',但它没有。有什么帮助吗?使用s=s.replace(“\”,“\ \”),这是非正则表达式版本。使用正则表达式,其中反斜杠仅转义下一个字符,即使在替换中也是如此 改用它就好了。。。或者,如果要使用正则表达式形式,可以将第二个参数中的反斜杠加倍
s=s.replaceAll("\"","\\\"");
我希望s的值为'foo\'bar\'foobar',但它没有。有什么帮助吗?使用s=s.replace(“\”,“\ \”)代码>,这是非正则表达式版本。使用正则表达式,其中反斜杠仅转义下一个字符,即使在替换中也是如此
改用它就好了。。。或者,如果要使用正则表达式形式,可以将第二个参数中的反斜杠加倍:
String after = before.replaceAll("\"", "\\\\\"");
如果您需要使用正则表达式匹配输入,这可能会很有用,但我强烈建议您使用非正则表达式形式,除非您确实需要正则表达式行为
就我个人而言,我认为String
中的方法以正则表达式开头是一个错误,比如foo.split(“.”
,它将在每个字符而不是句点上拆分,这对于粗心的开发人员来说完全出乎意料
s=s.replaceAll("\"","\\\\\"");
但是你真的应该按照这里其他人的建议用替换(…)
。使用
s=s.replaceAll("\"","\\\\\"");
请遵循以下程序并使用>s。替换(“/”/”)
您需要对这两个参数进行转义并替换所有参数,因为它们是正则表达式
@Test
public void testReplace() {
assertEquals("foo\\\"bar\\\"",
"foo\"bar\"".replaceAll("\\\"", "\\\\\\\""));
}
因此,如果你想写“
,你需要转义正则表达式->\”
,但是因为你在java中,你需要转义\
和“
,这样你就得到了\\\”
。(这是搜索参数)
对于要在正则表达式中使用的replace参数,我认为上面缺少的解释就是:Java\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
@Test
public void testReplace() {
assertEquals("foo\\\"bar\\\"",
"foo\"bar\"".replaceAll("\\\"", "\\\\\\\""));
}
String str = "'Foo \"Bar\" Bar'";
System.out.println(str);
System.out.println(str.replaceAll("\"", "\\\\\""));