Попробуй это.
NSInteger lengthOfText = [[textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];
There are various different ways of doing this. Have a look at the Wikipedia "String similarity measures" page for links to other pages with algorithms.
I don't think any of those algorithms take sounds into consideration, however - so "staq overflow" would be as similar to "stack overflow" as "staw overflow" despite the first being more similar in terms of pronunciation.
I've just found another page which gives rather more options... in particular, the Soundex algorithm (Wikipedia) may be closer to what you're after.
Расстояние Левенштейна , вероятно, то, что вы ищете.
Некоторое время назад я написал реализацию двойного метафона на C # . Вы обнаружите, что он значительно превосходит Soundex и тому подобное.
Также предлагалось расстояние Левенштейна, и это отличный алгоритм для множества применений, но фонетическое сопоставление - это не совсем то, что он делает; это только иногда кажется таким, потому что фонетически похожие слова также обычно пишутся одинаково. Я провел анализ различных алгоритмов нечеткого сопоставления , которые также могут оказаться полезными.
Вы можете искать строковые «расстояния», например расстояние Левенштейна .
Чтобы справиться с «подобными звуками», вы можете захотеть изучить кодирование с использованием фонетического алгоритма, такого как Double Metaphone или soundex. Я не знаю, будет ли полезно вычисление расстояний Левенштейна на строках с фонетической кодировкой, но это возможно. В качестве альтернативы вы можете использовать эвристику, например: преобразовать каждое слово в строке в его закодированную форму и удалить все слова, встречающиеся в обеих строках, и заменить их одним представлением перед вычислением расстояния Левенштейна.
Модуль Perl Text :: Phonetic имеет реализации различных алгоритмов.
Джефф Этвуд писал о поиске аналогичного решения для определения авторства сообщений вики, которое может помочь вам сузить область поиска.
Если вы сравниваете значения в базе данных SQL, вы можете использовать функцию SOUNDEX . Если вы запросите Google для SOUNDEX и C #, некоторые люди написали аналогичную функцию для этого и VB.
Я тоже должен рекомендовать Soundex, я использовал его в прошлом для обработки орфографических ошибок названия городов. Вот хорошая ссылка для использования: http://whitepapers.zdnet.com/abstract.aspx?docid=352953