Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск подстроки с Е и Ё без regexp? (https://javascript.ru/forum/misc/55241-poisk-podstroki-s-e-i-jo-bez-regexp.html)

Momon 19.04.2015 14:14

Поиск подстроки с Е и Ё без regexp?
 
Нужно найти подстроку sub в строке str без учёта "е" и "ё". Т.е. "вертолёт" найдёт "вертолет" и наоборот. Сейчас использую regexp.
var reg = new RegExp(sub.replace(/[её]/g, "[её]")); // Заменяю буквы "е" и "ё" на [её], формирую регулярное выражение
А потом этим регулярным выражением ищу совпадение в строке
reg.test(str);
Вопрос: можно ли сделать без regexp? Там же получается сложная штука: букв "е" и "ё" в слове может быть несколько, т.е. куча вариантов может быть. :blink:

ps пока писал кажись додумался, можно же на "е" заменить все "ё" в строке и подстроке! :)

Octane 19.04.2015 14:45

Рекомендую нормализовать в Unicode NFC обе строки, в браузерах, которые поддерживают normalize:
str = str.normalize('NFC');
Иначе скопированный из какой-нибудь OSX текст может оказаться в Unicode NFD, и буква ё будет состоять из 2х символов \u0435\u0308
alert('\u0435\u0308'); // ё

alert(/ё/.test('\u0435\u0308')); // false

alert(/ё/.test('\u0435\u0308'.normalize())); // true


Unicode Normalization Forms

Momon 19.04.2015 22:01

Octane,
Спасибо, теперь я ещё больше боюсь всех этих кодировок :blink:


Часовой пояс GMT +3, время: 19:51.