一、js有replaceAll方法?
js 中没有replaceAll方法,jQuery中的replaceAll()方法都是自己封装的。
二、js实现replaceAll方法
js本来有replace方法,请看菜鸟教程
replace()
方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法:
stringObject.replace(regexp/substr,replacement)
第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。
注意重点:
如果 regexp 具有全局标志 g
,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
实例:
var str = "dogdogdog";
var str2 = str.replace("dog","cat");
console.log(str2);
这里仅替换第一个dog字符串,输出为:catdogdog。
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);
输出结果同上例。
4.使用repalce方法实现replaceAll方法
function replaceAll( restr ,oldstr, newstr ){
while (restr.indexOf(oldstr)>= 0){
restr = restr.replace(oldstr,newstr);
}
return restr;
}
var str = "dogdogdog";
var str2 = str.replaceAll(str, "dog", "cat");
console.log(str2);
输出结果同上例。
参考链接:
https://www.cnblogs.com/henuyuxiang/p/11609088.html
https://blog.csdn.net/qq_20446879/article/details/79534721