我想知道是否可以每次用不同的值替换字符串中的每个匹配模式。
假设我在一段文本中找到了 5 个匹配项,我想用一个字符串替换第一个匹配项,用另一个字符串替换第二个匹配项,用另一个字符串替换第三个匹配项,依此类推...是否可以实现?
var synonyms = ["extremely", "exceedingly", "exceptionally", "especially", "tremendously"];
"I'm very upset, very distress, very agitated, very annoyed and very pissed".replace(/very/g, function() {
//replace 5 matches of the keyword every with 5 synonyms in the array
});
最佳答案
您可以尝试在 replace
回调函数中替换匹配项:
var synonyms = ["extremely", "exceedingly", "exceptionally", "especially", "tremendously"];
var cnt = 0;
console.log("I'm very upset, very distress, very agitated, very annoyed and very pissed (and very anxious)".replace(/very/g, function($0) {
if (cnt === synonyms.length) cnt = 0;
return synonyms[cnt++]; //replace 5 matches of the keyword every with 5 synonyms in the array
}));
如果匹配项多于数组中的项目,cnt
将确保再次使用第一个项目中的数组项。
关于Javascript 正则表达式替换为不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896563/