iOS确定两个unicode字符是否实际上是另一种语言中的一个字母,并放入表视图索引中



在UITableView的索引滚动器(右侧的滚动器包含每个部分的字符)中,如何显示英语字符和日语字符的混合?有没有办法获取NSString的第一个字符,然后检查它是否真的是一个é或其他东西的一部分(因为é是2个unicode字符--e+`)。任何代码片段都会非常有用。只需输入第一个字符,它就会显示随机字符,如"="或"~",而不是日语字符

谢谢!

注意:我没有使用UILocalizedIndexedCollation,因为我使用的是CoreData的FetchResultsController。在网上的许多地方,我读到你不能同时使用两者。

编辑:我现在可以得到角色了,但是表视图索引似乎无法正确渲染它们。有人在表视图索引中显示类似日语字符的内容吗?

最可靠的方法是使用对这些字符敏感的NSString方法。您可能会对WWDC2011-会话128-高级文本处理视频感兴趣。它广泛地讨论了这个问题。注意"组合字符序列"部分

根据那里提供的信息,你可能会做这样的事情:

#warning I haven't tested this thoroughly
NSString *string = @"Hello";
__block NSString *firstCharacterSequence = nil;
[string enumerateSubstringsInRange:NSMakeRange(0, string.length) 
                           options:NSStringEnumerationByComposedCharacterSequences 
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){
                            firstCharacterSequence = substring;
                            *stop = YES;
                        }];
NSLog(@"%@",firstCharacterSequence);

最新更新