-1

给定一个字符串,我试图确定它属于字母表中的哪个字母。例如,“apple”进入“A”部分。“香蕉”进入“B”部分。我用它来识别部分:

NSRange range = [string rangeOfString:letter 
                              options:NSAnchoredSearch |
                                      NSCaseInsensitiveSearch |
                                      NSDiacriticInsensitiveSearch |
                                      NSWidthInsensitiveSearch
                                range:NSMakeRange(0, string.length)
                               locale:locale];

string我要存储的字符串在哪里,并且letter是字母表中的一个字母。我对字母表中的每个字母循环执行此操作。

它很好用,除了像“æquo”这样的词,它应该被放入字母“A”中,但不是。该怎么办?

编辑情节变厚。我现在在看韩文。“것”这个词应该放在字母“ㄱ”中。除了维护一个巨大的映射表之外,必须有一些方法可以做到这一点。

4

1 回答 1

1

我想我已经明白了:我想错了。问题不是,给定的单词是否以字母表中的某个字母开头。相反,问题是,给定的单词是否落在字母表中某个字母的排序范围内。

例如,在“æquo”的情况下,我可以通过检查它是否在“A”之后或在“B”之前来检查它是否在“A”部分的排序范围内。

对于任何给定的语言环境, Apple 的compare:options:range:locale:方法都知道这两个问题的答案。在这个特定的例子中,对于法语,它会说是。对于其他一些语言,比如丹麦语,它应该说不。

我已经在英语、西班牙语、葡萄牙语、法语、德语和韩语上对此进行了测试,它似乎给出了预期的结果。

于 2014-09-08T01:36:56.953 回答