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

    xiaoxiao2025-10-26  7

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

    转载请注明原文地址: https://ju.6miu.com/read-1303551.html
    最新回复(0)