Как изменить это регулярное выражение заменить от замены одного слова до замены массива слов? - PullRequest
0 голосов
/ 25 августа 2018

Я искал, но не могу ничего адаптировать к своему коду. Я пытаюсь превратить 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);

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Вы можете использовать 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 для получения того же результата.

Удачного кодирования!:)

0 голосов
/ 25 августа 2018

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

Конечно, это зависит от того, * * * * * * не имеет никаких специальных символов.Если в нем может быть больше, чем просто слово, вы можете сначала replace-escape их всех.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...