System.out.println("aaa".replace("a", "\\.")); System.out.println("aaa".replace("a", "\\\\.")); System.out.println("aaa".replaceAll("a", "\\.")); System.out.println("aaa".replaceAll("a", "\\\\.")); System.out.println("aaa".replaceFirst("a", "\\.")); System.out.println("aaa".replaceFirst("a", "\\\\."));
输出如下:
\.\.\. \\.\\.\\. ... \.\.\. .aa \.aa
和你预想的一样么?下面我们分别介绍一下replace、replaceAll和replaceFirst的区别与联系。
replace(CharSequence target, CharSequence replacement)函数的功能就是将某个String中的字符串target替换成为字符串replacement,不涉及正则表达式。但是值得注意的是replace是 全部替换。参见上文中程序的运行结果。
String replaceAll(String regex,String replacement)函数的功能和replace类似,也是完全替换,但是regex是正则表达式(当然也可以是字符串,正则表达式的一种)。
Pattern
.compile
(regex).matcher
(str).replaceAll
(repl)
Matcher.replaceAll
. Use Matcher.quoteReplacement(java.lang.String)
to suppress the special meaning of these characters, if desired.String a="aa"; String b="b\\\\"; System.out.println("before replacement:a="+a+"\tb="+b); //a=a.replaceFirst("a",b);//a=b\a,失败的替换 a=a.replaceFirst("a",b.replace("\\", "\\\\"));//a=b\\a,成功的替换 System.out.println("after replacement:a="+a+"\tb="+b);