關於java中replace、replaceAll、replaceFirst的用法


今天突然看到Java中的replace有兩種方法,一種是直接替換,另一種是可以進行匹配替換的方式:

public String replace(CharSequence target,
                      CharSequence replacement)
使用指定的字面值替換序列替換此字符串所有匹配字面值目標序列的子字符串。該替換從字符串的開頭朝末尾執行,例如,用 "b" 替換字符串 "aaa" 中的 "aa" 將生成 "ba" 而不是 "ab"。

 

參數:
target - 要被替換的 char 值序列
replacement - char 值的替換序列
返回:
所得 String
拋出:
NullPointerException - 如果  target 或  replacement 為  null

源碼如下:

public String replace(CharSequence target, CharSequence replacement) {
    return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}

 ------------------------------------------------------------------------------------

String的replaceAll用法

public String replaceAll(String regex, String replacement) {
    return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

是將第一次參數作為正則表達式進行匹配:

如:

String a = "0010101";
a = a.replace("^0", "(81)");
System.out.println(a);
// 此時輸出的是(81)010101,因為^0翻譯成正則表達式是第一個0,所以第一個0與正則表達式匹配,然后用(81)替換與正則表達式匹配的字符串

但是replaceAll有區別的是:

String a = "00010101";
a = a.replaceAll("0", "(81)");
System.out.println(a);
// 輸出的是(81)(81)(81)1(81)1(81)1

 

---------------------------------------------------------------------------------------

replaceFirst用法:

public String replaceFirst(String regex, String replacement) {
    return Pattern.compile(regex).matcher(this).replaceFirst(replacement);
}

是將第一次參數作為正則表達式進行匹配:

如:

String a = "0010101";
a = a.replace("^0", "(81)"); System.out.println(a); // 此時輸出的是(81)010101,因為^0翻譯成正則表達式是第一個0,所以第一個0與正則表達式匹配,然后用(81)替換與正則表達式匹配的字符串

但是replaceAll有區別的是:

String a = "00010101";
a = a.replaceAll("0", "(81)"); System.out.println(a); // 輸出的是(81)0010101
 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM