replaceAll()如何同時替換多個不同的字符串(或多個符號)

前戲

今天同事小姐姐找我求助這麼一個問題;

Java中的replaceAll()方法怎麼才能同時替換多個不同的字符串呢?

正好我遇到過這個情況,就跟她分享了一下心得,解決問題後的她開心的像剛充完氣兒一樣。

這讓我頗感欣慰,在這裏我也分享給大家。

需求場景

場景1:

String str1 = "廣東省,福建省,北京市,海淀區,河北省,上海市,....";

需要把“省”、“市”、“區”一起去掉;

變成: 廣東,福建,北京,海淀,河北,上海....

場景2:

String str2 = "0*00*00//33?23?23/.....";

需要把多餘符號都去掉,如上述中的 “*”、“/”、“?” 一起去掉;

變成:00000332323

replaceAll原理:

在源碼中是這樣的(圖文一起提供):

/* 源碼:
 * @param   regex : 此字符串可以匹配正則表達式,也可以是一般字符
 * @param   replacement : 要替換成的字符串
 */
public String replaceAll(String regex, String replacement) {
    return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}

很顯然,這個替換的字符是支持正則的,那就好辦了~

 

解決方法

測試類:

public class demo {
    public static void main(String[] args) {
        // 同時替換多個文字
        String str1 = "廣東省,福建省,北京市,海淀區,河北省,上海市";
        str1 = str1.replaceAll("(?:省|市|區)", "");
        System.out.println("替換多箇中文:" + str1);

        // 同時替換多個字符
        String str2 = "0*00*00//33?23?23/";
        str2= str2.replaceAll("\\*|\\/|\\?","");
        System.out.println("替換多個字符:" + str2);
    }
}

打印內容:

替換多箇中文:廣東,福建,北京,海淀,河北,上海
替換多個字符:00000332323

Process finished with exit code 0

注意事項:

文字替換方式:str1 = str1.replaceAll("(?:省|市|區)", "");

多個不同字符,通過 “|” 符號隔開;

符號替換方式:str2= str2.replaceAll("\\*|\\/|\\?","");

注意了,符號替換與文字不同,需要用 “\\” 雙斜槓轉義。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章