字符串中的字符数(不是字节数)



在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

相关内容

  • 没有找到相关文章

最新更新