Эта ссылка , по-видимому, указывает на то, что API для проверки орфографии не предоставляется разработчику, хотя существует по крайней мере один сторонний продукт , который утверждает, что предоставляет решение на основе API (который также имеет оценку, с которой вы можете проверить, как это работает).
Относительно того, как вы реализуете эту функцию, если вы не можете использовать сторонний продукт, проблема с английским языком заключается в любом другом языке :-) Я имею в виду, что это не обязательно было согласовано с самого начала, и оно имеет «поднял» слова из десятков других языков.
Следовательно, нет действительно приличных правил , которые могли бы сказать вам, является ли слово действительным.
Вам потребуется поддерживать словарь, и, учитывая причудливые углы языка, вам, вероятно, придется ограничить его общими словами (и, если пробел является проблемой, короткими).
И, кстати, если вы делаете переход на самописный подход на основе словаря, вы можете воспользоваться небольшим трюком, который я выучил много лет назад.
Вы можете закодировать каждое слово как:
- количество символов (байт), общее с последним; и
- новый финал.
Итак, список слов
HERE would encode as THIS
------------- ----
sanctimonious 0,sanctimonious
sanction 6,on
sanguine 3,guine
trivial 0,trivial
Вы сохраняете 7 байтов прямо там (19%), и я подозреваю, что экономия была бы аналогичной для словаря из 20000 слов только из-за минимального расстояния между (то есть общими префиксами) смежных слов.
Для ускорения поиска вы можете также сохранить в памяти таблицу из 26 записей, в которой хранятся начальные смещения для слов, начинающихся с a
, b
, c
, ..., z
. Слова с этими смещениями всегда будут автоматически иметь 0 в качестве первого байта, поскольку они не имеют общих букв с предыдущим словом.