Java String.replaceAll不';不要用转义引号替换引号

Java String.replaceAll不';不要用转义引号替换引号,java,Java,很难用转义的报价替换报价。我有一个字符串,它的值为'Foo'bar'foobar',我试图用转义引号替换bar周围的引号,但它不起作用。我快疯了 s=s.replaceAll("\"","\\\""); 我希望s的值为'foo\'bar\'foobar',但它没有。有什么帮助吗?使用s=s.replace(“\”,“\ \”),这是非正则表达式版本。使用正则表达式,其中反斜杠仅转义下一个字符,即使在替换中也是如此 改用它就好了。。。或者,如果要使用正则表达式形式,可以将第二个参数中的反斜杠加倍

很难用转义的报价替换报价。我有一个字符串,它的值为'Foo'bar'foobar',我试图用转义引号替换bar周围的引号,但它不起作用。我快疯了

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("\"", "\\\\\""));