我有一个包含非英语单词的数据库(对于那些想知道土耳其字母的人)。我有一个算法可以将输入与数据库进行比较。
所以我的问题是这样的;在我的数据库中,所有字符串都是用土耳其字符编写的。假设我有这个元素要比较 heyyö
。当用户输入 heyyo
时,它不会找到它,因为它们被视为不同的单词。
我的第一个想法是放置特殊情况,当发现非英语字符时,考虑是英语还是非英语字母(例如 g 与 ğ 或 i 与 ı),但这意味着很多暴力。
我怎样才能优雅地做到这一点。
哦,如果没有暗示的话,用户会从文本字段输入此输入。
最佳答案
删除变音符号称为“折叠”。您可以使用选项NSDIacriticInsensitiveSearch
来比较字符串,而不考虑变音符号。
[string compare:otherString options:NSDiacriticInsensitiveSearch] == NSOrderedSame
您可以类似地使用stringByFoldingWithOptions:locale:
生成折叠字符串。
请注意,这只会删除变音符号。角色可以通过多种方式“看起来”相同,但实际上并不相同。土耳其语对此有些臭名昭著,因为“I”的小写版本是“ı”(拉丁文小点 I),而不是“i”。如果您特别处理土耳其语,您可能必须考虑到这一点。
关于ios - 如何从 UITextField 中获取非英文字符并将其视为普通字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23641995/