JAVA中string.replace和string.replaceAll的区别及用法

 我来答
香料魔法
2018-11-29 · TA获得超过2.2万个赞
知道答主
回答量:218
采纳率:60%
帮助的人:21.6万
展开全部

1、替换方式不同

【public String replace( )】

是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。

【public String replaceAll( )】

使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。

2、参数不同

【replace】的参数是char和CharSequence。可以支持字符的替换,也支持字符串的替换。

【replaceAll】的参数是regex,regex表示是正则表达式。即基于正则表达式的替换。

用法范例一:

public static void main(String[] arg) throws OgnlException {

String s =”sdf\\a\\aa”;

//把s中的反斜杠\ 替换为\\

System.out.println(s);

System.out.println(s.replaceAll(“\\\\”, “\\\\\\\\”));

System.out.println(s.replace(“\\”, “\\\\”));

}

用法范例二:

String str = "wel2come3Souhe";

String str1 = str.replace("e", "E");

String str3 = str.replace('e', 'E');

System.out.println("replace字符串==" + str1);

System.out.println("replace字符=="+str3);

String str2 = str.replaceAll("\\d", "a");//将数字替换a

System.out.println("replaceAll==" + str2);

输出结果:

replace字符串==wEl2comE3SouhE

replace字符==wEl2comE3SouhE

replaceAll==welacomeaSouhe

扩展资料

Java中的String类

1、String类是final类,因此String类不能被继承。

2、String的成员方法都默认为final方法。

3、被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。

4、String类其实是通过char数组来保存字符串的。

5、String对象一旦被创建就是固定不变的。

6、对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

参考资料:百度百科-Java

参考资料:百度百科-string

QQMSD8
推荐于2018-05-09 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部

replace是单纯的替换字符串,而replaceAll是替换匹配的正则表达式。

以下为JDK API的doc说明:

  1. replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。

  2. replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
新叶给力
2016-01-09 · TA获得超过323个赞
知道小有建树答主
回答量:258
采纳率:50%
帮助的人:66.4万
展开全部

区别主要就是replaceAll是基于规则表达多的替换,而replace是一般的基于字符或字符序列本身的替换。

Java String.replace()方法

返回一个新的字符串,用newChar替换此字符串中出现的所有oldChar


以下是java.lang.String.replace()方法的声明

public String replace(char oldChar, char newChar)  
package jason.replace;
import java.lang.*;  
  
public class StringDemo {  
  public static void main(String[] args) {  
    String str = "aacdeaa";  
    System.out.println("string = " + str);  
    // replace all 'a' characters with 'b' characters.  
    String replaceStr = str.replace('a', 'b');  
    // prints the strings after replacement  
    System.out.println("new string = " + replaceStr);  
  }  
}

让我们来编译和运行上面的程序,这将产生以下输出结果:

string = aacdeaa  

new string = bbcdebb  

public class TryDotRegEx {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = "111.3.22.11";

str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");

str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");

str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");

str=str.replaceAll("(^|\\.)(\\d{1})(\\.|$)","$100$2$3");

System.out.println(str);

}

}


打印结果:111,003,022,011;

正则表达式,关于String.replaceALL(..)

regex:

class t1 {

       public static void main(String a[]) {

         String s = 'E:\\jbx\\x9\\io9';

         String ss;

//把路径s中的'\'换为'\\',为何还要整8个'\'?我以为4个就行了。

         ss = s.replaceAll('\\\\', '\\\\\\\\         System.out.println('s= ' + s);

         System.out.println('ss=' + ss);

//output:  

//s= E:\jbx\x9\io9

//ss=E:\\jbx\\x9\\io9

       }

}

这里的关键是String.replaceAll()是用regular expression 来作为参数的。但是java本身的字符串对于转义符\也有类似的处理。首先,java会把“\\\\”解释成一个字符串(其中包含两个char)——“\\”这个就是你在JDK的文档里看到的。 

接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。 

换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll('\\', '\\\\'); 就可以了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式