js實現replaceAll方法

js原本有replace方法,請看w3school的說明:正則表達式

  replace() 方法用於在字符串中用一些字符替換另外一些字符,或替換一個與正則表達式匹配的子串。函數

語法:this

  stringObject.replace(regexp/substr,replacement)spa

  第一個參數爲一個字符串或者一個正則表達式,第二個參數爲一個字符串或者一個用於生成字符串的函數。prototype

注意重點:code

  若是 regexp 具備全局標誌 g,那麼 replace() 方法將替換全部匹配的子串。不然,它只替換第一個匹配子串。regexp

實例:對象

var str = "dogdogdog";
var str2 = str.replace("dog","cat");
console.log(str2);

這裏僅替換第一個dog字符串,輸出爲:catdogdog。blog

js中是沒有replaceAll方法的,那麼如何實現替換全部匹配的字符串呢,即在js中實現replaceAll方法:字符串

1. 使用具備全局標誌g的正則表達式

var str = "dogdogdog";
var str2 = str.replace(/dog/g,"cat");
console.log(str2);

實現替換所有匹配字符串,輸出結果爲:catcatcat。

2. 使用另外一種具備全局標誌g的正則表達式的定義方法

var str = "dogdogdog";
var str2 = str.replace(new RegExp("dog","gm"),"cat");
console.log(str2);

輸出結果同上例。這裏g表示執行全局匹配,m表示執行屢次匹配。

3. 給string對象添加原型方法replaceAll()

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}

這樣就能夠像使用replace方法同樣使用replaceAll方法:

var str = "dogdogdog";
var str2 = str.replaceAll("dog", "cat");
console.log(str2);

輸出結果同上例。我的推薦使用第3種方法。

相關文章
相關標籤/搜索