Найти и заменить слова между символами - PullRequest
0 голосов
/ 01 мая 2020

Я работаю над этим проектом, ниже приведена копия строки, над которой я работаю, но это только для примера, поэтому в этом нет особого смысла. Моя цель - найти слово между <ebm> и </ebm> и заменить его соответственно.

var string = "“You know you're in love when <ebm>img-1</ebm> you can't fall asleep because reality <ebm>img-2</ebm>is finally better than your dreams.” <ebm>img-3</ebm>"

Например, если слово между <ebm> и </ebm> равно

"img-1" then replace it with "Strong" (remove the <ebm> tags)
"img-2" then replace it with "Weak" (remove the <ebm> tags)
"img-3" then replace it with "Nice" (remove the <ebm> tags)

, я не могу просто использовать string.replace (), потому что у меня есть сотни списков этих слова, которые должны быть заменены соответственно. Мне нужно знать, что находится внутри слова между тегами, чтобы я мог использовать его для извлечения оценочного значения из моего списка массивов.

1 Ответ

1 голос
/ 01 мая 2020

Выполните замену регулярного выражения с помощью функции обратного вызова:

var terms = {};
terms['img-1'] = 'Strong';
terms['img-2'] = 'Weak';
terms['img-3'] = 'Nice';

var text = "“You know you're in love when <ebm>img-1</ebm> you can't fall asleep because reality <ebm>img-2</ebm>is finally better than your dreams.” <ebm>img-3</ebm>";
text = text.replace(/<ebm>(.+?)<\/ebm>/g, function(match, contents, offset, input_string)
{
    return (terms[contents]);
});

console.log(text);

Идея здесь состоит в том, чтобы сопоставлять каждый тег <ebm>...</ebm>, передавая каждое совпадение функции обратного вызова. Затем мы берем текст, захваченный между тегами, и выполняем поиск в ассоциативном массиве, который, например, отображает img-1 в Strong.

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