在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"));