为了账号安全,请及时绑定邮箱和手机立即绑定

多次应用替换(使用 Javascript 动态)

多次应用替换(使用 Javascript 动态)

慕姐8265434 2021-06-30 13:58:48
我有当前的功能:function replaceValue(v) {  const firstRegex = new RegExp('hello', 'g');  const secondRegex = new RegExp('bye', 'g');  return v.replace(firstRegex, '@').replace(secondRegex, '#');}但是,现在我想添加更多正则表达式,并且我想要一个如下所示的数据结构:const regexStorage = [{ value: '@', replace: 'hello',}, { value: '#', replace: 'bye',}]我想不出一种方法来使用它regexStorage来动态添加数组中存在的给定值的尽可能多的替换。我必须这样做:function replaceValue(v) {  const firstRegex = new RegExp(regexStorage[0].replace, 'g');  const secondRegex = new RegExp(regexStorage[1].replace, 'g');  return v.replace(firstRegex, regexStorage[0].value).replace(secondRegex, regexStorage[1].value);}但这只是使用存储。我想知道如何动态地做到这一点。
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

在 JS 中,您可以编写一个单行的 reduce(它是为这种对数组进行操作但返回单个值的确切场景而设计的)(mdn)循环为:


const regexStorage = [{

 value: '@',

 replace: 'hello',

}, {

 value: '#',

 replace: 'bye',

}];


let replaceValue = v => regexStorage.reduce((v, {value, replace}) => v.replace(new RegExp(replace, 'g'), value), v);


let str = 'hi hello bye bi hello';

console.log(replaceValue(str));

console.log(str);


查看完整回答
反对 回复 2021-07-01
?
隔江千里

TA贡献1906条经验 获得超10个赞

您可以遍历正则表达式存储


const regexStorage = [

  {

   value: '@',

   replace: 'hello',

  }, 

  {

   value: '#',

   replace: 'bye',

  }

]



function replaceValue(v) {

  for(var i = 0; i < regexStorage.length; i++){

    v = v.replace(new RegExp(regexStorage[i].replace, "g"), regexStorage[i].value);

  }

  return v;

}

var data = "hello, my name is andam. bye.";

console.log(data);

console.log(replaceValue(data));


查看完整回答
反对 回复 2021-07-01
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信