js實現replaceAll方法


js本來有replace方法,請看w3school的說明:

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

語法:

  stringObject.replace(regexp/substr,replacement)

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

注意重點:

  如果 regexp 具有全局標志 g,那么 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。

實例:

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

這里僅替換第一個dog字符串,輸出為:catdogdog。

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種方法。


免責聲明!

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



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