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);//替换后的结果