我有一个问题varstr='aaabbbcccdddaaabbbcccddd'str.replace(/(aaa|bbb)/g,(_,m)=>m==='aaa'?'bbb':'aaa').replace(/(ccc|ddd)/g,(_,m=>m)==='ccc'?'ddd':'ccc');这样可以让字符串中的aaa/bbb和ccc/ddd相互替换但是,我想用键值对的形式来表示要相互替换的内容,比如arr={'aaa':'bbb','ccc':'ddd'…}来表示要相互替换的内容而replace里的内容用变量代替,只要增减键值对就能改变要替换的内容。这个方法该怎么写呢?
2 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
conststr='aaabbbcccdddaaabbbcccddd';constarr={'aaa':'1','ccc':'2','bbb':'3','ddd':'4'};constarrStr=`(${Object.keys(arr).join('|')})`;constd=str.replace(newRegExp(arrStr,'g'),m=>arr[m]);
开满天机
TA贡献1786条经验 获得超13个赞
varstr='aaabbbcccdddaaabbbcccddd';varmap={'aaa':'bbb','ccc':'ddd'};varmapx={}vararrReNode=[];varkey,val;for(keyinmap){val=map[key];mapx[key]=val;mapx[val]=key;arrReNode.push(key);//如果有正则特殊字符,自己处理下arrReNode.push(val);//如果有正则特殊字符,自己处理下}varre=newRegExp('('+arrReNode.join('|')+')','g');str.replace(re,function($m1){returnmapx[$m1]});
添加回答
举报
0/150
提交
取消