Найти имя в списке, если имя написано неправильно - PullRequest
3 голосов
/ 19 апреля 2010

У меня есть список имен, по которым проверяется код, чтобы узнать, существует ли человек, и если да, то делать что-то еще.

Моя проблема в том, что я хочу обработать случай, когда имя было введено неправильно .. Т.е. У меня есть список имен

Bob
Frank
Tom
Tim
John

Если я наберу Джона, я хочу, чтобы он спросил меня, имел ли я в виду Джона. Если я набираю Tm, меня спрашивают, имел ли я в виду Тима, если я отвечаю «нет», он спрашивает, имел ли я в виду Том .. И т.д. ..

Кто-нибудь делал что-то подобное раньше?

Ответы [ 3 ]

6 голосов
/ 19 апреля 2010

Если имя не появляется в списке, вы можете использовать алгоритмы, такие как Расстояние Левенштейна и Soundex , чтобы определить, какие записи в списке являются самыми близкими, и предложить эти

1 голос
/ 19 апреля 2010

Первым делом загляните в список, чтобы узнать, есть ли у вас точное совпадение. Если нет, вы вычисляете расстояние Левенштейна между словом, введенным пользователем, и каждым элементом в списке. Вы предлагаете тот, который имеет самый низкий.

0 голосов
/ 19 апреля 2010

Если вы не хотите, чтобы вас ограничивали списком людей, и вы хотите искать общие имена, вы можете использовать службу API Google для отправки запросов на проверку орфографии и получения взамен предложенной коррекции орфографии для запроса:

http://www.sitepoint.com/blogs/2004/03/10/check-your-spelling-with-google/

...