难以理解的String.replaceAll()方法

Jimlyli 2010-05-15 10:38:42
String a1="a";
String c1="b";
String d1="a";
System.out.println(a1.replaceAll(d1,c1));
String a2="1+1";
String c2="b";
String d2="1+1";
System.out.println(a2.replaceAll(d2,c2));


输出的是:b
1+1
为什么输出的不是:b
b
?????
...全文
119 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazylaa 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bao110908 的回复:]

普通替换请使用 replace 方法,而不是 replaceAll。

replace 与 replaceAll 都是替换所有的,不要被方法名所迷惑了。前者使用字符串进行替换,而后者是采用正则表达式进行替换。
[/Quote]

哦也
茫茫大海 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]

replaceAll的第二个参数是正则表达式 +号在正则里有特殊含义 所以1+1里的加号需要转义
System.out.println(a2.replaceAll(d2,"1\+1"));
[/Quote]

alex44667416 2010-05-15
  • 打赏
  • 举报
回复
得多看看API!
  • 打赏
  • 举报
回复
如果把

replace 方法名不变
replaceAll 方法名改为 replaceRegex

可能就更好理解一些了。
  • 打赏
  • 举报
回复
普通替换请使用 replace 方法,而不是 replaceAll。

replace 与 replaceAll 都是替换所有的,不要被方法名所迷惑了。前者使用字符串进行替换,而后者是采用正则表达式进行替换。
若鱼1919 2010-05-15
  • 打赏
  • 举报
回复
System.out.println(a2.replaceAll("1+1","b"));//这句话的意思是:把1个或者多个1,后面跟着一个1替换成b,显然a2当中没有符合条件的,因此,原样输出
若鱼1919 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]
replaceAll的第二个参数是正则表达式 +号在正则里有特殊含义 所以1+1里的加号需要转义
System.out.println(a2.replaceAll(d2,"1\+1"));
[/Quote]
应该是:System.out.println(a2.replaceAll("1\\+1",c2));
knightzhuwei 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 knightzhuwei 的回复:]
replaceAll的第二个参数是正则表达式 +号在正则里有特殊含义 所以1+1里的加号需要转义
System.out.println(a2.replaceAll(d2,"1\+1"));
[/Quote]
不对 应该是
System.out.println(a2.replaceAll("1\+1",c2));
若鱼1919 2010-05-15
  • 打赏
  • 举报
回复
System.out.println(a2.replace(d2,c2));//这样就可以了
replaceAll是正则替换,而在正则中,+是有特殊意义的
knightzhuwei 2010-05-15
  • 打赏
  • 举报
回复
replaceAll的第二个参数是正则表达式 +号在正则里有特殊含义 所以1+1里的加号需要转义
System.out.println(a2.replaceAll(d2,"1\+1"));

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧