我有一些代码搜索文本以进行匹配,然后当找到匹配时,对匹配的文本执行非平凡的转换,然后我想用此转换的结果替换。例如(忽略Zalgo个问题):
xmodmap -pm
我可以用RegExp.exec()
拼凑一个黑客,但必须有一个巧妙的方法来完成这项任务。
答案 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;
reduce()
将循环遍历数组中的每个元素,执行某些操作,返回该内容,然后继续操作,直到它为数组中的每个元素完成某些操作。
这是一种方便的方法,可以将任何数组压缩为单个值。