@jarderRek

Как в javascript сделать игнорирование опечаток?

Здравствуйте, появилась вот такая проблема:
https://codepen.io/fazras12/pen/JjMQEmq

Если вводить 'Я купил молоко' то все будет выполнятся правильно. Ну я хочу чтобы можно было опечататься, например вводить: 'Я купиил моллокко!!!####' , ' я КупИилЛ МоллОкКкОО' и так далее. Можно как то такое сделать на javascript?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Akela_wolf
Extreme Programmer
Делайте сравнение не на равенство строк, а на "примерное" соответствие с учетом возможных опечаток. Это только вы можете решить - что считать опечаткой, а что нет. Javascript не настолько умный.

Можете попробовать использовать расстояние Левенштейна (или Дамерау-Левенштейна)
Ответ написан
@rPman
У опечаток есть определенный профиль ошибок, т.е. не случайные кнопки
Правильно - написать свою реализацию функции левенштейна, которая определяет свою стоимость ошибки (меньшую) для таких событий как:
* знаки препинания и пробелы должны иметь малую стоимость или даже нулевую (к пробелам особое отношение но в твоей задаче лучше удалить)
* повторяющиеся символы должны иметь наименьшую стоимость (удаление символа)
* символы, находящиеся рядом на клавиатуре при подмене имеют маленькую стоимость, их лучше забить в код вручную (мне не требовалось работать с мультиязычными данными, максимум англ и рус), если найдете готовую базу для всех языковых раскладок клавиатур включая мобильные, был бы рад

Я обычно перед сравнением строки привожу к упрощенному виду, удаляю все не алфавитные символы (оставляю только буквы и цифры), причем со всеми языками в идеале по отдельности (но это может всплыть когда строки требующие расширенную латиницу упрощенно подменяют на обычную) и привожу к одному регистру.

Так же, после определенной накопленной суммы разницы между строками, дальше тратить время не актуально, советую в своей реализации добавить этот параметр (особенно это актуально когда надо огромные объемы данных обработать)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час