一、簡述
【replace】的參數(shù)是 char 和 CharSequence蚁鳖,既支持字符的替換曹质,也支持字符串的替換(CharSequence即字符串序列的意思,也就是字符串)骆撇。
【replaceAll】的參數(shù)是 regex瞒御,即基于規(guī)則表達式的替換。比如:可以通過replaceAll("\\d", "*")
把一個字符串所有的數(shù)字字符都換成星號神郊。
二肴裙、異同
1??相同點:都是全部替換,即把源字符串中的某一字符或字符串全部換成指定的字符或字符串涌乳。
2??不同點:replaceAll 支持正則表達式蜻懦,因此會對參數(shù)進行解析(兩個參數(shù)均是)。replace 不支持正則夕晓,replace("\\d","*")
就是替換"\\d"
的字符串宛乃,而不會解析為正則。
3??另外還有一個不同點:\
在 Java 中是一個轉(zhuǎn)義字符蒸辆,所以需要用兩個代表一個征炼。例如System.out.println( "\\" );
只打印出一個\
。但是\
也是正則表達式中的轉(zhuǎn)義字符吁朦,需要用兩個代表一個柒室。所以\\\\
被 Java 轉(zhuǎn)換成\\
,\\
又被正則表達式轉(zhuǎn)換成\
逗宜,因此用 replaceAll 替換\
為\\
雄右,就要用replaceAll("\\\\","\\\\\\\\")
,而 replace 則為replace("\\","\\\\")
纺讲。
4??如果只想替換第一次出現(xiàn)的擂仍,可以使用 replaceFirst(),這個方法也是基于規(guī)則表達式的替換熬甚,但與 replaceAll() 不同的是逢渔,只替換第一次出現(xiàn)的字符串。