js实现replaceAll方法

js原本有replace方法,请看w3school的说明:正则表达式

  replace() 方法用于在字符串中用一些字符替换另外一些字符,或替换一个与正则表达式匹配的子串。函数

语法:this

  stringObject.replace(regexp/substr,replacement)spa

  第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。prototype

注意重点:code

  若是 regexp 具备全局标志 g,那么 replace() 方法将替换全部匹配的子串。不然,它只替换第一个匹配子串。regexp

实例:对象

var str = "dogdogdog";
var str2 = str.replace("dog","cat");
console.log(str2);

这里仅替换第一个dog字符串,输出为:catdogdog。blog

js中是没有replaceAll方法的,那么如何实现替换全部匹配的字符串呢,即在js中实现replaceAll方法:字符串

1. 使用具备全局标志g的正则表达式

var str = "dogdogdog";
var str2 = str.replace(/dog/g,"cat");
console.log(str2);

实现替换所有匹配字符串,输出结果为:catcatcat。

2. 使用另外一种具备全局标志g的正则表达式的定义方法

var str = "dogdogdog";
var str2 = str.replace(new RegExp("dog","gm"),"cat");
console.log(str2);

输出结果同上例。这里g表示执行全局匹配,m表示执行屡次匹配。

3. 给string对象添加原型方法replaceAll()

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}

这样就能够像使用replace方法同样使用replaceAll方法:

var str = "dogdogdog";
var str2 = str.replaceAll("dog", "cat");
console.log(str2);

输出结果同上例。我的推荐使用第3种方法。

相关文章
相关标签/搜索