java中String字符串的替換函數:replace與replaceAll的區別

例如有如下x的字符串 

String x = "[kllkklk\\kk\\kllkk]";
要將裏面的“kk”替換爲++,可以使用兩種方法得到相同的結果  

replace(CharSequence target, CharSequence replacement)       ——          x.replace("kk", "++")

replaceAll(String regex, String replacement)       ——          x.replaceAll("kk", "++")
 

可見兩個函數沒有什麼區別,下面將字符串中的“\\”替換爲“++”
  System.out.println(x.replace("\\", "++"));    沒有問題
  System.out.println(x.replaceAll("\\", "++"));  報錯 java.util.regex.PatternSyntaxException

 

可見,當使用轉義字符進行替換的時候,是有區別的。replaceAll的參數就是regex,是正則表達式。首先會轉義,所以報錯。

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

 

那麼在使用普通的字符串替換時,選用哪一個函數呢?

String x = "[kllkklk\\kk\\kllkk]";
  String>    tmp=x.replace("kk", "--");
  System.out.println(new Date().getTime());
  for(int>    tmp=x.replaceAll("kk", "++");
  System.out.println(new Date().getTime());

測試結果:

1312424571937
1312424574531
1312424576671

 

根據測試replaceAll函數要更快一些。看源碼發現,replace函數裏面仍使用replaceAll函數。

 

總體原則:當字符串無法確定是否具有轉義字符時,而且也不需要轉義時,建議使用replace函數

否則,使用replaceAll函數

發佈了14 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章