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
?????

解决方案 »

  1.   

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

  2.   

    System.out.println(a2.replace(d2,c2));//这样就可以了
    replaceAll是正则替换,而在正则中,+是有特殊意义的
      

  3.   

    不对 应该是
    System.out.println(a2.replaceAll("1\+1",c2));
      

  4.   

    应该是:System.out.println(a2.replaceAll("1\\+1",c2));
      

  5.   

    System.out.println(a2.replaceAll("1+1","b"));//这句话的意思是:把1个或者多个1,后面跟着一个1替换成b,显然a2当中没有符合条件的,因此,原样输出
      

  6.   

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

  7.   

    如果把replace 方法名不变
    replaceAll 方法名改为 replaceRegex可能就更好理解一些了。