function changeKey(string) {
var keywords = ['and', 'array', 'begin', 'case', 'class', 'const',
'div', 'do', 'else', 'end', 'for', 'function', 'if', 'implementation', 'interface', 'mod', 'not', 'of', 'or',
'procedure', 'program', 'record', 'repeat', 'shl', 'shr', 'string', 'then', 'to', 'type', 'unit', 'until', 'uses',
'var', 'with', 'while'];
var edited = string;
for (let i = 0; i < keywords.length; i++) {
edited = edited.replace(new RegExp(keywords[i], "gi"), `<span class="keywords">${keywords[i]}</span>`);
}
return edited;
}
здравствуйте! вот я написал функцию, чтобы отформатировать некий текст. все отлично форматируется, но проблема в том что форматируются все совпадения, и получается не отформатированный текст, а какая-то абракадабра
пробовал вставить перед началом цикла
keywords = keywords.map(x => “\b” + x + “\b”); /поиск именно слов, а не сочетаний букв/
но тогда текст вообще не форматируется. подскажите, пожалуйста, как решить проблему. буду благодарен
P.S. я, конечно, могу все это организовать без цикла тупо прописывая замену для каждого эл-та массива (тогда можно будет не создавать регулярки, а все вручную прописывать, и словами, а не эл-тами массива), но во-первых, это займет уйму времени, а во-вторых, я не думаю, что это практично