1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

时间:2022-01-24 00:32:54

相关推荐

java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

展开全部

JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),32313133353236313431303231363533e59b9ee7ad9431333361313836replaceall替换所有的字符,其实大不然,只是替换的用途不一样。

public String replace(char oldChar,char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。

public String replaceAll(String regex,String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果:

pile(regex).matcher(str).replaceAll(repl)

参数:

regex - 用来匹配此字符串的正则表达式

返回:得到的 String

抛出: PatternSyntaxException - 如果正则表达式的语法无效。

如果我有以下的字符串:Stringx="[kllkklk\\kk\\kllkk]";

要将里面的“kk”替换为++,可以使用两种方法得到相同的结果replace(CharSequencetarget,CharSequencereplacement)——x.replace("kk","++")

replaceAll(Stringregex,Stringreplacement)——x.replaceAll("kk","++")

可见两个函数在处理上述字符串的时候没有什么区别,

下面将字符串中的“\\”替换为“++”System.out.println(x.replace("\\","++"));//没有问题

System.out.println(x.replaceAll("\\","++"));//报错java.util.regex.PatternSyntaxException

可见,当使用转义字符进行替换的时候,是有区别的。

replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。

如果使用System.out.println(x.replaceAll("\\\\","++"));即可完成。

那么在使用普通的字符串替换时,选用哪一个函数呢?Stringx="[kllkklk\\kk\\kllkk]";

Stringtmp;

//System.out.println(x.replace("[","#").replace("]","#"));

System.out.println(newDate().getTime());

for(inti=0;i<1000000;i++)

tmp=x.replace("kk","--");

System.out.println(newDate().getTime());

for(inti=0;i<1000000;i++)

tmp=x.replaceAll("kk","++");

System.out.println(newDate().getTime());

测试结果:

1312424571937

1312424574531

1312424576671

根据测试replaceAll函数要更快一些。看源码发现,replace函数里面仍使用replaceAll函数。

总体原则:

当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数

否则,使用replaceAll函数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。