浅谈java中replace和replaceAll的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈java中replace和replaceAll的区别相关的知识,希望对你有一定的参考价值。

1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串); \r\n2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号; \r\n\r\n 相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用 replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串; \r\n 另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作; \r\n 还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的. \r\n\r\n举例如下: \r\n \r\n String src = new String("ab43a2c43d"); \r\n\r\n System.out.println(src.replace("3","f"));=>ab4f2c4fd. \r\n System.out.println(src.replace('3','f'));=>ab4f2c4fd. \r\n System.out.println(src.replaceAll("\\d","f"));=>abffafcffd. \r\n System.out.println(src.replaceAll("a","f"));=>fb43fc23d. \r\n System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d \r\n System.out.println(src.replaceFirst("4","h"));=>abh32c43d. 参考技术A

谈之前,我也去查了一些资料,我就感觉我自己记的也不是很清楚,就把API翻了一个边!

看完API以后感觉印象深刻了不少,大概总结了一下:不足之处还请指点!

public class  ReplaceTest

public static void main(String[] args) 

System.out.println("\\n\\t\\t==========浅谈java中replace和replaceAll的区别==========\\n");
init();
//初始化!
private static void init()

/*
1:API解释:
public String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的

通俗点说:把一个字符串中指定的字符,换成你想要的字符!

演示:换c,为 大;
*/
String s="public String replace(char oldChar, char newChar)".replace('c','大');

System.out.println(s);//输出结果:publi大 String repla大e(大har oldChar, 大har newChar)




/*
2:API解释
public String replace(CharSequence target,CharSequence replacement)
使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
该替换从字符串的开头朝末尾执行,
例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。

通俗点说:把一个字符串中,你想要换的多个字符,用字符串形式输入进去,替换成你想要的!
他后面打的这个比方,意思就是说如果多个相同字符,有重复的情况下,他是从左边开始算起的,并不是从右边!

演示:换 ac,为 他好!
*/
s="ac bc ac tc wc tc ac ".replace("ac","他好");

System.out.println(s);//他好 bc 他好 tc wc tc 他好



/*由此可以断定,这个二个方法是重载,倘若你参数类型传错,必定不行:*/

//s="今天气温真是高,已经高达37度了".replace('高',"低");//类型传错,直接报错!!
//s="今天气温真是高,已经高达37度了".replace("高",'低');//类型传错,直接报错!!
/*
方法 String.replace(char,char)不适用(参数不匹配; 
String无法转换为char)
方法 String.replace(CharSequence,CharSequence)不适用
(参数不匹配; char无法转换为CharSequence)
*/


/*
3:API解释:
public String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

通俗点说:利用正则表达式,完成替换整个字符串中所有符合的字符!

演示:
*/
s="扁担扁担扁担宽宽宽宽,板凳板凳板凳长长长长";
String s1=s;

//板凳替换成桌子!
s=s.replaceAll("板凳","桌子");
System.out.println(s);
/*输出:扁担扁担扁担宽宽宽宽,桌子桌子桌子长长长长*/


//利用正则表达式过滤中文!
s1=s1.replaceAll("[\\u2E80-\\u9FFF]","夏天");
System.out.println(s1);
/*输出:夏天夏天夏天夏天夏天夏天夏天夏天夏天夏天,夏天夏天夏天夏天夏天夏天夏天夏天夏天夏*/

本回答被提问者采纳
参考技术B rerpace(a,b)其中a是一个字符或字符串,是把目标字符串中的a替换为b

replaceAll(a,b)其中a是一个正则表达式,是把目标字符串中符合a这个正则的字符串替换为b
参考技术C replace没有用到正则表达式,而replaceAll会使用正则表达式进行替换(所以不想被正则表达式识别的元字符需要加上转义字符)。

JAVA中替换字符的方法replace和replaceAll 区别

replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;
相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用
replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的时,只替换第一次出现的字符串;
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;

以上是关于浅谈java中replace和replaceAll的区别的主要内容,如果未能解决你的问题,请参考以下文章

浅谈java中replace和replaceAll的区别

Java 中的 replace() 和 replaceAll()

java replace和replaceAll

JAVA中替换字符的方法replace和replaceAll 区别

Java中replace和replaceall的区别

Java中replace与replaceAll区别