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