非正則實現JS字符串的replaceAll方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章