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