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

时间:2013-03-10 22:48:48

标签: objective-c string string-length glyph charactercount

在objective-c中的字符串中,如果我说[myStr length];之类的字符串,则返回一个数字,即字节数,但我可以用什么来返回字符串中的字符数。

例如:
一个字母“a”的字符串返回长度为1
一个带有单个表情符号的字符串返回长度为2(有时甚至长度为4)


这是因为这是字符串中的字节数...我只需要字符数。

1 个答案:

答案 0 :(得分:8)

我只是掀起了这个方法。将其添加到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 length = 5,chars = 5
    表情符号长度= 11,字符= 9