1)正如评论中的许多人已经指出的那样,您的字符串由 5 个组成的字符序列(如果您愿意,也可以是字符簇)组成。当被分解时unichar
s as NSString
’s length
方法你会得到 7,这是unichar
在内存中表示字符串所需的时间。
2)显然是UITextField
and UITextView
以 unichar 的方式处理字符串。好消息,你也可以。参见#3。
3)您可以通过使用一些来获取组成的字符序列的数量NSString
正确处理组合字符序列的 API。我很快就烤好了一个小例子NSString
类别:
@implementation NSString (ComposedCharacterSequences_helper)
-(NSUInteger)numberOfComposedCharacterSequences{
__block NSUInteger count = 0;
[self enumerateSubstringsInRange:NSMakeRange(0, self.length)
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){
NSLog(@"%@",substring); // Just for fun
count++;
}];
return count;
}
@end
同样,这是快速代码;但它应该让你开始。如果你像这样使用它:
NSString *string = @"(# ゚Д゚)";
NSLog(@"string length %i", string.length);
NSLog(@"composed character count %i", [string numberOfComposedCharacterSequences]);
您会看到您得到了想要的结果。
如需深入解释NSString
API 查看WWDC 2012 Session 215 Video "Text and Linguistic Analysis"