一、簡述
【replace】的參數是 char 和 CharSequence,既支持字符的替換,也支持字符串的替換(CharSequence即字符串序列的意思,也就是字符串)。
【replaceAll】的參數是 regex,即基于規則表達式的替換。比如:可以通過replaceAll("\\d", "*")
把一個字符串所有的數字字符都換成星號。
二、異同
1??相同點:都是全部替換,即把源字符串中的某一字符或字符串全部換成指定的字符或字符串。
2??不同點:replaceAll 支持正則表達式,因此會對參數進行解析(兩個參數均是)。replace 不支持正則,replace("\\d","*")
就是替換"\\d"
的字符串,而不會解析為正則。
3??另外還有一個不同點:\
在 Java 中是一個轉義字符,所以需要用兩個代表一個。例如System.out.println( "\\" );
只打印出一個\
。但是\
也是正則表達式中的轉義字符,需要用兩個代表一個。所以\\\\
被 Java 轉換成\\
,\\
又被正則表達式轉換成\
,因此用 replaceAll 替換\
為\\
,就要用replaceAll("\\\\","\\\\\\\\")
,而 replace 則為replace("\\","\\\\")
。
4??如果只想替換第一次出現的,可以使用 replaceFirst(),這個方法也是基于規則表達式的替換,但與 replaceAll() 不同的是,只替換第一次出現的字符串。