js实现replaceAll方法

js实现replaceAll方法js本来有replace方法,请看w3school的说明:replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法:stringObject.replace(regexp/substr,replacement)第一个参数为一个字符串或者一个正则表达式,第二个参数为一个字符串或者一个用于生成字符串的函数。注意重点:如果regexp…

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

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

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. 使用先split,再join的方法

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

var str = "dogdogdog";
var str2 = str.split("dog").join("cat")
console.log(str2);

输出结果同上例。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • Set集合详解

    Set集合详解定义:一个set集合不能包含重复的元素,set实现Collection并增加了hashCode和equals方法。set不允许存储值相同的元素,原因为在取值的时候set依靠的是元素本身取值。由于set提供了hashCode和Equals方法,所以set支持比较。set主要实现HashSet,TreeSet,LinkedHashSet(后面会分别以不同的文章介绍着三种实现)set允许存储一个null…

    2022年6月3日
  • 【嵌入式】C语言中volatile关键字

    【嵌入式】C语言中volatile关键字00.目录文章目录00.目录01.volatile概述02.volatile应用场景03.volatile应用示例04.嵌入式系统中应用05.volatile官方说明volatile06.附录01.volatile概述volatile是C语言中的一个关键字。将变量定义为volatile就表示告诉编译器这个变量可能会被竟想不到地改变,在这种情况下,编译器就不会去假设这个变量的值了,及优化器在用到这个变量是必须每次重新读取他的值。02.volatile应用场景在程序中,volati

    2022年7月27日
  • 详谈利用系统漏洞及mysql提权

    详谈利用系统漏洞及mysql提权提权,顾名思义就是提升权限,当我们getshell⼀个⽹站之后,⼤部分情况下我们的权限是⾮常低的,这时就需要利⽤提权,让原本的低权限(如只允许列⽬录)→⾼权限(拥有修改⽂件的能⼒),权限提升后,对接下来的渗透有很⼤帮助

    2022年7月27日
  • 怎么完全卸载赛门铁克_发一个赛门铁克的卸载工具

    怎么完全卸载赛门铁克_发一个赛门铁克的卸载工具===================================WhatisNONAV===================================NONAVisanunsupportedSymantectoolforremovingfilesandregistrykeysfromNortonAntivirus/SymantecAntiviru…

    2022年5月1日
  • [已解决]踩过的坑之mysql连接报“Communications link failure”错误

    [已解决]踩过的坑之mysql连接报“Communications link failure”错误目录前言第一种方法:第二种方法第三种方法(适用于项目和数据库在同一台服务器)第四种方法第五种方法(项目和数据库不在同一台服务器)总结前言先给大家简述一下我的坑吧,(我用的是mysql,至于oracle有没有这样的问题,有心的小伙伴们可以测试一下哈),在自己做个javaweb测试项目的时候,因为买的是云服务器,所以数据库连接的是用ip地址,用IDE开发好…

    2022年5月18日
  • python 字符串比较忽略大小写

    python 字符串比较忽略大小写类似javaequalsIgnoreCase实现字符串比较网上找到的无非两种,一种转换大小写,一种使用re模块的search方法忽略大小写。但是在实际使用中发现直接使用re模块比较后直接if判断存在出错的情况,所以直接自己手动写了一个方法:defequalsIgnoreCase(a,b):ifisinstance(a,str):ifisinstance(b,str):returnlen(a)==len(b)

    2022年6月18日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号