附加双引号的Java字符串

附加双引号的Java字符串,java,regex,string,Java,Regex,String,我想用双引号字符替换字符串中的所有括号 我认为这会奏效: "[foo".replaceAll(Pattern.quote("["), Pattern.quote(""")); 但事实并非如此。有人能帮我理解我需要做什么吗?你需要避开引用 "[foo".replaceAll(Pattern.quote("["), "\""); replaceAll接受字符串 "[foo".replaceAll("\\[", "\"")); 我还可以添加一个测试正则表达式字符串的好地方吗 "[foo".re

我想用双引号字符替换字符串中的所有括号

我认为这会奏效:

"[foo".replaceAll(Pattern.quote("["), Pattern.quote("""));

但事实并非如此。有人能帮我理解我需要做什么吗?

你需要避开引用

"[foo".replaceAll(Pattern.quote("["), "\""); 

replaceAll接受字符串

"[foo".replaceAll("\\[", "\""));
我还可以添加一个测试正则表达式字符串的好地方吗

"[foo".replaceAll("\\[", "\"")
要转义字符串中的特殊字符,如\,您需要在\,so \ beans,\\ beans \,等等之前加上前缀。

以下操作:

[foo.replaceAll\[,\\

注:

replaceAll将其第一个参数解释为正则表达式。 您需要在正则表达式上下文中转义开头的括号,否则它的格式将不正确。
第二个参数-replacement-是一个不需要引号的常用字符串。

您错过了反斜杠转义。这不起作用,因为在regexp模式中,[是一个元字符。您需要将其转义才能起作用。这就是OP使用模式的原因。quote[foo.replaceAll]\[,\…?嗯…如果我做2 \那么stackoverflow只打印1\,因此帖子没有显示我试图传达的内容…经验教训…:-P你需要在代码前面放4个空格,以便检测到它是代码,然后它就不会逃逸不,它不起作用,因为出于某种原因,你必须在括号前面放2个反斜杠,这个gives me:QEfoo istead of foo。@JRaymond的方法给出了foo。这是由第二个模式引起的吗?quote?@dragon66是的……第二个参数应该是一个普通的替换字符串,而不是一个普通的字符串expression@JRaymond:+1确认这一点。我仍然想知道为什么从投票结果来看,这个帖子似乎对其他人有效,但对我无效。@dragon66抱歉,伙计们,更新了答案。我也很惊讶它得到了4张选票。
"[foo".replaceAll(Pattern.quote("["), "\"") ;