Java replace 和 replaceAll

    Java String 的replace 和replaceAll 都是用來替換srcString的subString,可是有些不一樣的是,replace的參數是字符或者字符串,而replaceAll的參數能夠是正則表達式。正則表達式

public String replace (Char old,Char newChar) {
    (oldChar != newChar) {
        len = .i = -[] val = (++i < len) {
            (val[i] == oldChar) {
                }
        }
        (i < len) {
            buf[] = [len](j = j < ij++) {
                buf[j] = val[j]}
            (i < len) {
                c = val[i]buf[i] = (c == oldChar) ? newChar : ci++}
            String(buf)}
    }
    }

    從源碼中能夠看出能夠替換字符,當字符串中存在oldChar則替換全部的oldChar爲newChar,並返回一個新字符串,原字符串不改變。若是不存在則返回原字符串的引用。spa

public String replace(CharSequence target,CharSequence replacement) {
    Pattern.(target.toString()Pattern.).matcher(
            ).replaceAll(Matcher.(replacement.toString()))}

   replace 替換字符串時,是從字符串的開始日後匹配。例如: 替換"aa"爲「b」,則「aaa」.repalce("aa","b") 返回的是"ba",而不是"ab"。這裏能夠看到,內部使用的replaceAll方法。當target或者replacement爲null時,會報NullPointerException。這裏依然是返回的是一個新字符串,原字符串不變(字符串的操做幾乎都是不改變原字符串,有一個例外,可是忘了)。code

  

public String replaceAll(String regex,String replacement) {
    Pattern.(regex).matcher().replaceAll(replacement)}

  replaceAll替換的字符串,經過匹配正則表達式(注意轉義字符'\'和‘$’,在字符串中的影響),固然給定的字符串也是正則表達式的一種,返回的依然是新的字符串。ci

相關文章
相關標籤/搜索