java String 字符串替换,replace成功,replaceAll却失败?求原因...

String abc = "asdfsadf$[姓名]";
abc = abc.replace("$[姓名]", "张三");
System.out.println(abc); -------------> 成功替换 结果:asdfsadf张三
---------------------------------------------------------
String abc = "asdfsadf$[姓名]";
abc = abc.replaceAll("$[姓名]", "张三");
System.out.println(abc); -------------> 替换失败 结果asdfsadf$[姓名]

$ 是正则表达式中的一个符号,replace函数替换时忽略正则表达式符号,replaceAll和replaceFirst函数替换时是使用正则表达式匹配的。
两个函数功能不同。
使用 Matcher.quoteReplacement(String str)函数,可以把正则表达式符号转为正常符号。
例如:
abc = abc.replaceAll(Matcher.quoteReplacement("$[姓名]"), "张三");
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-18
replaceAll的第一个参数不是字符串而是正则,所以要改成
abc = abc.replaceAll("\\$\\[姓名\\]", "张三");追问

非常感谢,不过楼上的先回答,不好意思哦!

相似回答