Iow*_*a15 8 unicode objective-c nsstring ios
我需要一种方法来查找一个字符的数量NSString.我的应用程序的性质需要许多多字符unicode字符,这给该length方法带来了明显的问题NSString.
从Apple的开发者网站复制:
Length
Returns the number of Unicode characters in the receiver.
- (NSUInteger)length
Return Value The number of Unicode characters in the receiver.
Run Code Online (Sandbox Code Playgroud)
我不想要字符数本身,而是要打印出字符串时会看到的字符数.我在应用程序中使用的一些字符是带有上划线的数字和字母,即0̄.在unicode中,这用两个单独的unicode字符表示,但是,在打印时,它是一个单独的实体.当找到字符串的长度时,我需要像0这样的字符只计算为1,而不是像NSString length方法那样计算为2 .有办法做到这一点吗?谢谢.
Mar*_*n R 13
您可以使用以下NSStringEnumerationByComposedCharacterSequences选项枚举字符串中的字符
:
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
Run Code Online (Sandbox Code Playgroud)
分解的字符0̄和表情符号(也存储为两个UTF-16字符 - 所谓的"代理对")都被计为一个.