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

我有当前的功能:


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);

}

但这只是使用存储。我想知道如何动态地做到这一点。


慕姐8265434
浏览 134回答 2
2回答

qq_花开花谢_0

在 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);

隔江千里

您可以遍历正则表达式存储const regexStorage = [&nbsp; {&nbsp; &nbsp;value: '@',&nbsp; &nbsp;replace: 'hello',&nbsp; },&nbsp;&nbsp; {&nbsp; &nbsp;value: '#',&nbsp; &nbsp;replace: 'bye',&nbsp; }]function replaceValue(v) {&nbsp; for(var i = 0; i < regexStorage.length; i++){&nbsp; &nbsp; v = v.replace(new RegExp(regexStorage[i].replace, "g"), regexStorage[i].value);&nbsp; }&nbsp; return v;}var data = "hello, my name is andam. bye.";console.log(data);console.log(replaceValue(data));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript