使用JavaScript 封装一个字符串替换函数 str_replace

方文锋  2020-11-16 09:32:47  1285  首页学习JavaScript

自己使用JavaScript 封装一个字符串替换函数 str_replace,嗯就是模拟一下php的str_replace这个功能,放上代码:

 /** 
 * 字符串替换 
 * @param {array|string|RegExp} search_str 模式 search_str 
 * @param {array|string} replace_str 替换为 replace_str 
 * @param {string} strings 要替换的字符串 
 * @param {number} l 替换次数,值为-1的时候为全部替换 
 * @returns {string} 
 */ 
function str_replace(search_str, replace_str, strings, l) { 
    if (Object.prototype.toString.call(search_str) === "[object Array]") { 
        if (Object.prototype.toString.call(replace_str) === "[object Array]" && search_str.length == replace_str.length) { 
            for (var i = 0, len = search_str.length; i < len; i++) { 
                strings = str_replace(search_str[i], replace_str[i], strings, l); 
            } 
        } 
    } else if (l > 1) { 
        for (var i = 0; i < l; i++) { 
            strings = str_replace(search_str, replace_str, strings); 
        } 
    } else { 
        if (typeof replace_str === "string" || typeof replace_str === "number") { 
            if (Object.prototype.toString.call(search_str) === "[object RegExp]") { 
                if (l === -1) { 
                    var tag = search_str.global ? "g" : "g"; 
                    (search_str.ignoreCase) && (tag += "i"); 
                    (search_str.multiline) && (tag += "m"); 
                    var reg = new RegExp(search_str.source, tag); 
                    //console.log(reg); 
                    strings = strings.replace(reg, replace_str); 
                } else { 
                    (search_str.global) || (strings = strings.replace(search_str, replace_str)); 
                } 
            } 
            else { 
                if (l === -1) { 
                    var reg = new RegExp(search_str.replace(/(\.|\*|\+|\?|\(|\)|\[|\]|\{|\}|\\|\/|\|)/gi, "\\$1"), "g"); 
                    //console.log(reg); 
                    strings = strings.replace(reg, replace_str); 
                } else { 
                    strings = strings.replace(search_str, replace_str); 
                } 
            } 
        } 
    } 
    return strings; 
}  

如图: