@hckn

Как заменить полностью слово из строки, а не только его часть?

Нужно что-то типо fuzzy search.

К примеру, есть слово real, надо найти в строке слово really и полностью его заменить. Эта реализация заменяет только часть совпадающую, т.е. корень real

this.api = this.api.replace(word, 'BOOM')

Полный пример тут - https://codepen.io/dubdub/pen/BOLYzW
Как сделать полную замену?
  • Вопрос задан
  • 1358 просмотров
Решения вопроса 3
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Сначала разделить на слова пробелом, потом каждое отдельное слово проверять на вхождение.
В конце собрать обратно массив слов склеив пробелом.
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
При замене вместо строки используйте регулярное выражение, соответствующее строке и произвольному количеству символов. Т.е, замените

this.api = this.api.replace(word, 'BOOM')

на что-то вроде

this.api = this.api.replace(RegExp(`\\b${word}[a-z]*\\b`, 'ig'), 'BOOM')
Ответ написан
rockon404
@rockon404
Frontend Developer
Одно слово:
const word = 'real';
const regexp = new RegExp(`${word}\\w*`, 'ig');

string = 'really, reality, super, universe';

console.log(string.replace(regexp, 'BOOM'));  // BOOM, BOOM, super, universe


Демо.

Массив слов:
const words = ['real', 'super'];
const regexp = new RegExp(`(${words.join('|')})\\w*`, 'ig');
const string = 'really, reality, super, universe';

console.log(string.replace(regexp, 'BOOM'));  // BOOM, BOOM, BOOM, universe

Демо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
"Test test1 check apple untest dog food yo"
.split(" ")
.map(s => s.toUpperCase().indexOf("TEST") > -1 ? "BOOM!" : s)
.join(" ")
// => "BOOM! BOOM! check apple BOOM! dog food yo"
Ответ написан
Комментировать
MrStan1slav
@MrStan1slav
Веб-разработка
Я так понимаю вам нужно это: https://jsfiddle.net/MrStan1slav/vfzqh0ky
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы