在objective-c的字符串中,如果我输入[myStr length];
,它会返回一个字节数,但是我可以使用什么来返回字符串中的字符数呢?
例如:
包含字母"a"的字符串返回长度为1
包含单个表情符号的字符串返回长度为2(有时甚至长度为4)
这是因为这是字符串中的字节数…我只需要字符数
我刚刚编写了这个方法。添加到NSString
类别
- (NSUInteger)characterCount {
NSUInteger cnt = 0;
NSUInteger index = 0;
while (index < self.length) {
NSRange range = [self rangeOfComposedCharacterSequenceAtIndex:index];
cnt++;
index += range.length;
}
return cnt;
}
NSString *a = @"Hello";
NSLog(@"%@ length = %u, chars = %u", a, a.length, a.characterCount);
NSString *b = @"🏁 Emoji 📳";
NSLog(@"%@ length = %u, chars = %u", b, b.length, b.characterCount);
这个收益率:
Hello长度= 5,字符数= 5
🏁Emoji📳长度= 11,字符= 9