我已经搜索过,但是无法对我的代码进行任何修改。我正在尝试将var toReplace = "warming"
做成数组var toReplace = ['global', 'warming']
,以便它将输入中的数组中的每个单词替换为var newWord,它只是将单词包装在一个范围内。感谢您的帮助!
if (temperature > 90) {
var input = 'ITS GLOBAL EFFING WARMING';
var toReplace = "WARMING";
var emphasisColor = 'cyan';
};
var newWord = `<span style="color: ${emphasisColor}">${toReplace}</span>`;
var regEx = new RegExp(toReplace,"g");
var output = input.replace(regEx, newWord);
答案 0 :(得分:6)
join
和|
之间交替,以便数组中的任何一个单词都匹配。另外,请确保使用i
标志使其不区分大小写。
还将$&
放在替换字符串中以回显匹配的字符串(例如,当GLOBAL
匹配时,结果为<span style="color: cyan">GLOBAL</span>
而不是<span style="color: cyan">global,warming</span>
:
var input = 'ITS GLOBAL EFFING WARMING';
var toReplace = ['global', 'warming']
var emphasisColor = 'cyan';
var regEx = new RegExp(toReplace.join('|'),"gi");
var output = input.replace(regEx, `<span style="color: ${emphasisColor}">$&</span>`);
console.log(output);
当然,这取决于toReplace
没有任何特殊字符。如果它不仅可以包含文字字符,您可以首先replace-escape将它们全部。
答案 1 :(得分:2)
您可以使用forEach
为数组中的每个元素执行一个函数:
if (temperature > 90) {
var input = "ITS GLOBAL EFFING WARMING";
var toReplace = ["GLOBAL", "WARMING"];
var emphasisColor = "cyan";
};
toReplace.forEach((element, index) => {
regEx = new RegExp(element, "gi");
input = input.replace(regEx, `<span style="color: ${emphasisColor}">${toReplace[index]}</span>`);
});
您也可以使用for
循环而不是forEach
来获得相同的结果。
快乐编码! :)