搜索然后替换为JavaScript中的不同步骤

时间:2017-11-22 16:49:24

标签: javascript replace

我有一些代码搜索文本以进行匹配,然后当找到匹配时,对匹配的文本执行非平凡的转换,然后我想用此转换的结果替换。例如(忽略Zalgo个问题):

xmodmap -pm

我可以用RegExp.exec()拼凑一个黑客,但必须有一个巧妙的方法来完成这项任务。

2 个答案:

答案 0 :(得分:1)

您可以将回调传递给replace()以计算任意替换。

有关详细信息,请参阅documentation

答案 1 :(得分:1)

我不使用forEach(),而是使用reduce()并减少字符串。



const evaluateSum = () => 100;

var text = "foo bar <sum>(10+33)/pi</sum> baz";
var matches = text.match(/<sum>[\s\S]+?<\/sum>/g);
const replacedText = matches.reduce((result, element) =>
  result.replace(element, evaluateSum(element)), text);
  
console.log(replacedText);
&#13;
&#13;
&#13;

reduce()将循环遍历数组中的每个元素,执行某些操作,返回该内容,然后继续操作,直到它为数组中的每个元素完成某些操作。

这是一种方便的方法,可以将任何数组压缩为单个值。