NSString中的字符数

我需要一种方法来查找NSString的字符数。 我的应用程序的性质需要许多多字符unicode字符,这对于NSStringlength方法提出了明显的问题。

从苹果开发者网站复制:

 Length Returns the number of Unicode characters in the receiver. - (NSUInteger)length Return Value The number of Unicode characters in the receiver. 

我不希望字符本身的数量,而是string打印出来的字符数量。 我在应用程序中使用的一些字符是带有上划线的数字和字母,即0̄。 在unicode中,这是用两个单独的unicode字符表示的,但是在打印时是一个单一的实体。 findstring的长度时,我需要像0这样的字符只计为1,而不是NSString length方法。 有没有办法做到这一点? 谢谢。

您可以使用NSStringEnumerationByComposedCharacterSequences选项枚举string中的字符:

 NSString *string = @"0̄ 😄"; __block NSUInteger count = 0; [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { count++; }]; NSLog(@"%ld %ld", (long)count, (long)[string length]); // Output: 3 5 

被分解的字符0̄和表情符号😄(也被存储为两个UTF-16字符 – 所谓的“代理对”)被统计为一个。