js实现replaceAll方法
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);
输出结果同上例。
个人推荐使用第3种方法。
js实现replaceAll方法的更多相关文章
- js 字符串的replace() 方法和实现replaceAll() 方法
一.js中字符串的替换使用replace() 方法,但它只替换第一个匹配子串.如下例: <script type="text/javascript"> var sour ...
- js replace replaceAll
今天因为一些原因来看这篇博文,测试了一下根本不对.replace根本没有string.replace("字符","字符")这样的写法,而是stringObjec ...
- js实现replaceAll功能
js中没有原生的replaceAll 方法. function replaceAll(str , replaceKey , replaceVal){ var reg = new RegExp(repl ...
- TODO:Node.js pm2使用方法
TODO:Node.js pm2使用方法 pm2 是一个带有负载均衡功能的Node应用的进程管理器. 当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完 ...
- 【转载】JS中bind方法与函数柯里化
原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情 ...
- 前端Js跨域方法汇总—剪不断,理还乱,是跨域
1.通过jsonp跨域2.通过修改document.domain来跨子域(iframe)3.隐藏的iframe+window.name跨域4.iframe+跨文档消息传递(XDM)5.跨域资源共享 C ...
- 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别
一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- 原生JS中apply()方法的一个值得注意的用法
今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...
随机推荐
- 代替for-in 遍历对象
object.keys() object.getOwnPropertyName()
- python接口测试之新手篇
嗨,大家好,我是小白,好久没写博客了,最近公司搞什么python的接口测试,心里一阵狂喜,在公司上百个接口里拿出一个主要接口一顿乱搞,好在搞通了 但是在这过程中也碰到了好多的问题,决定将问题分享出来能 ...
- kubernetes-安装Helm
Helm是什么? Helm可以管理Kubernetes应用程序-Helm Charts帮助您定义,安装和升级最复杂的Kubernetes应用程序. 下载Helm 在https://github.com ...
- 定时任务at
1. at一次性执行定时任务 1.1 at服务管理与访问控制 at命令要想正确执行,需要atd服务的支持.atd服务是独立的服务 [root@centos2 ~]# systemctl status ...
- linux系统编程综合练习-实现一个小型的shell程序(二)
上节minishell当中,已经初步实现了一个简单命令的解析,这节来继续对更加复杂命令进行解析,包含:输入重定向的解析.管道行的解析.输出重定向的解析以及是否有后台作业的解析,如下: 下面对其进行实现 ...
- Flask-session,WTForms,POOL,Websocket通讯原理 -握手,加密解密过程
1.Flask-session Flask中的session 需要执行 session_interface - open_session存储到redis中,存的key:session:d3f07db2 ...
- JVM那些事儿之内存区域
相信绝大多数java开发者或多或少的都应该知道jvm,但是有多少人又深入去了解过,笔者深感自身能力的不足,去看了些资料,觉得还是有必要整理下自己的学习记录,时常回头看看,多看多实践提升自己的能力,故开 ...
- .net框架-链表(LinkedList<T>)
链表LinkedList 优点:插入元素快 缺点:查找元素慢 .net framework只提供了泛型版本 继承接口:ICollection<T>, IEnumerable<T> ...
- linux 中截取字符串
shell中截取字符串的方法有很多中,${expression}一共有9种使用方法.${parameter:-word}${parameter:=word}${parameter:?word}${pa ...
- 常见的C语言编程规范
头文件: 1.头文件中适合放置接口的声明,不适合放置实现. 2.头文件应向稳定的方向包含,产品依赖于平台,平台依赖于标准库. 3. .c/.h文件禁止包含用不到的头文件. 4.每一个.c文件应有一个同 ...