日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

展開全部

JAVA中string.replace()和string.replaceAll()的區(qū)別及用法乍一看,字面上理解好像replace只替換第一個出現(xiàn)的字符(受javascript的影響),32313133353236313431303231363533e59b9ee7ad9431333361313836replaceall替換所有的字符,其實大不然,只是替換的用途不一樣。

public String replace(char oldChar,char newChar)

返回一個新的字符串,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 而生成的。 如 果 oldChar 在此 String 對象表示的字符序列中沒有出現(xiàn),則返回對此 String 對象的引用。否則,創(chuàng)建一個新的 String 對象,用來表示與此 String 對象表示的字符序列相等的字符序列,除了每個出現(xiàn)的 oldChar 都被一個 newChar 替換之外。

public String replaceAll(String regex,String replacement)使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的每個子字符串。此方法調(diào)用的 str.replaceAll(regex, repl) 形式產(chǎn)生與以下表達式完全相同的結(jié)果:

Pattern.compile(regex).matcher(str).replaceAll(repl)

參數(shù):

regex - 用來匹配此字符串的正則表達式

返回:得到的 String

拋出: PatternSyntaxException - 如果正則表達式的語法無效。

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

要將里面的“kk”替換為++,可以使用兩種方法得到相同的結(jié)果replace(CharSequencetarget,?CharSequencereplacement)??——x.replace("kk",?"++")

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

可見兩個函數(shù)在處理上述字符串的時候沒有什么區(qū)別,

下面將字符串中的“\\”替換為“++”System.out.println(x.replace("\\","++"));???//沒有問題

System.out.println(x.replaceAll("\\","++"));??//報錯java.util.regex.PatternSyntaxException

可見,當使用轉(zhuǎn)義字符進行替換的時候,是有區(qū)別的。

replaceAll的參數(shù)就是regex,是正則表達式。首先會轉(zhuǎn)義,所以報錯。

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

那么在使用普通的字符串替換時,選用哪一個函數(shù)呢?String?x=?"[kllkklk\\kk\\kllkk]";

String?tmp;

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

System.out.println(new?Date().getTime());

for(int?i?=0;i<1000000;i++)

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

System.out.println(new?Date().getTime());

for(int?i?=0;i<1000000;i++)

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

System.out.println(new?Date().getTime());

測試結(jié)果:

1312424571937

1312424574531

1312424576671

根據(jù)測試replaceAll函數(shù)要更快一些。看源碼發(fā)現(xiàn),replace函數(shù)里面仍使用replaceAll函數(shù)。

總體原則:

當字符串無法確定是否具有轉(zhuǎn)義字符時,而且也不需要轉(zhuǎn)義時,建議使用replace函數(shù)

否則,使用replaceAll函數(shù)

總結(jié)

以上是生活随笔為你收集整理的java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。