不用正则实现js中replace全局替换的功能

1.我们替换,一般用下面方法:‘qwew’.replace(/w/g, '@')这种方法,很方便

2.问题是万一我们要替换的内容中含有特殊字符,如‘)’,这种情况下,我们就必须将')'进行转义,即‘qw)ew)’.replace(/w\\)/g, '@')

3.还有些具体的情况下,如我们要替换的内容是可变的且含有特殊字符,那么我们用2的方法就显得很麻烦了或者根本解决不了,具体情况如下:

把微信的特殊表情字符转换为表情图片:

var data = 'w/::)e/::)r';//用户随机输入的内容

var face= [//用户可选的表情符号

 ['微笑', '/::)'],
 ['撇嘴', '/::~'],
 ['色', '/::B'],
 ['发呆', '/::|'],
 ['得意', '/:8-)'],
 ['流泪', '/::<'],
 ['害羞', '/::$']

];

我们可以通过substr方法来代替replace方法,且不需要考虑特殊字符转义得情况,

解决过程如下:

for(var j=0; j<face.length; j++) {//考虑到含有特殊字符,不用正则
while(data.indexOf(face[j][1])+1) {
var index = data.indexOf(face[j][1]),
len = face[j][1].length,
str1 = data.substr(0, index),
str2 = data.substr(index+len);
data = str1 +'<img src="'+ src+j +'.gif">'+ str2;
}
}

console.log(data);//替换后的结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值