js的字符串替换函数replace

最近用js写了一个模板替换的函数,传入一个对象和一个模板字符串,将模板中对应的变量替换成对应的值,这个功能很简单,遍历一下对象,然后使用js自带的replace函数进行替换,写好后,一开始觉得挺好用的,也没出什么bug,后来就需要加参数的时候,就加上一个变量、对象,就替换好了,但是后来发现有个地方替换不了了,调试了好久,一直找不到什么原因,就查了一下文档,原来是replace有分部分替换和全部替换

stringObject.replace(regexp/substr,replacement)

第一个参数是一个Regexp对象或者要替换的字符串,第二个参数是替换的字符串

var s = 'abcdefgabcdefg';
alert(s.replace('abc', '123'));
这是部分替换,结果是123defgabcdefg,后面的abc并没有被替换条

如果是下面的这种就是全部替换

var s = 'abcdefgabcdefg';
alert(s.replace(/abc/g, '123'));
这样就能两个abc都进行替换了

好了,这样将代码拷贝进模板替换函数后,应该就没问题了,可是试了之后发现,还是行不通,我的替换代码是这样的

temp = temp.replace('/{'+name+'}/g', value);
name分别是名和值,这样拼装就能变成类似上面/abc/g 的样子了,可是发现,外面加了引号之后,就变成一个字符串了,/g的作用没了,这种方法是行不通了

这样的话只能使用replace的另外那种用法了,就是传入一个Regexp对象,代码如下

var reg = new RegExp('{'+name+'}','g');
temp = temp.replace(reg, value);
也就是正则表达式,第一个参数是 一个字符串,指定了正则表达式的模式或其他正则表达式
第二个参数是指定匹配的方式,g就是全局匹配

这种方法就可以做到动态的替换字符串了,最后测试了一下,我的函数终于可以用了。。。。

注:这里只是大概讲了一下这个函数,具体请用手戳戳屏幕上的这个地址http://www.w3school.com.cn/jsref/jsref_replace.asp






  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值