前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js实现replaceAll方法

js实现replaceAll方法

作者头像
全栈程序员站长
发布2022-09-15 10:37:35
1.8K0
发布2022-09-15 10:37:35
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

js本来有replace方法,请看w3school的说明

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

语法:

代码语言:javascript
复制
stringObject.replace(regexp/substr,replacement)

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

如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

实例:

代码语言:javascript
复制
var str = "dogdogdog";
var str2 = str.replace("dog","cat");
console.log(str2);

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


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

1. 使用具有全局标志g的正则表达式
代码语言:javascript
复制
var str = "dogdogdog";
var str2 = str.replace(/dog/g,"cat");
console.log(str2);

实现替换全部匹配字符串,输出结果为:catcatcat

2. 使用另一种具有全局标志g的正则表达式
代码语言:javascript
复制
var str = "dogdogdog";
var str2 = str.replace(new RegExp("dog","gm"),"cat");
console.log(str2);

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

3. 给string对象添加原型方法replaceAll()
代码语言:javascript
复制
String.prototype.replaceAll = function(s1, s2) { 
   
    return this.replace(new RegExp(s1, "gm"), s2);
}

这样就可以像使用replace方法一样使用replaceAll方法:

代码语言:javascript
复制
var str = "dogdogdog";
var str2 = str.replaceAll("dog", "cat");
console.log(str2);

输出结果同上例。

4. 使用先split,再join的方法

评论区@默默之分享的这个方法太赞了,拉到正文里以免有人不看评论,感谢@默默之分享。

代码语言:javascript
复制
var str = "dogdogdog";
var str2 = str.split("dog").join("cat")
console.log(str2);

输出结果同上例。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163384.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 使用具有全局标志g的正则表达式
  • 2. 使用另一种具有全局标志g的正则表达式
  • 3. 给string对象添加原型方法replaceAll()
  • 4. 使用先split,再join的方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档