非正則實現JS字串的replaceAll方法
阿新 • • 發佈:2019-01-09
在JavaScript中,有一個字串方法,很讓人不爽。
那就是replace方法。
假如你傳入的第一個引數是字串。
它只會替換第一個匹配到的子串,而無法全域性替換。
事實上,你也可以傳入正則表示式,帶“g”引數,彌補這個缺陷。
但總歸還是不夠爽。
那就自己寫個replaceAll方法吧!
下面的實現,我沒有用到正則。
/* input:輸入字串 find:要做替換的子串 replacement:替換成 */ function replaceAll(input, find, replacement) { var res = ""; var pos = 0; var index = input.indexOf(find, pos); //如果要替換的子串是空字串 if(find === ""){ res += replacement; for(var i=0;i<input.length;i++){ res += input.charAt(i) + replacement; } return res; } while(index >= 0){ res += input.slice(pos, index); res += replacement; pos = index + find.length; index = input.indexOf(find, pos); } return res + input.slice(pos); } var input = "tomcat"; //_t_o_m_c_a_t_ console.log(replaceAll(input, "", "_")); //pomcap console.log(replaceAll(input, "t", "p")); //tomdog console.log(replaceAll(input, "cat", "dog"));