5

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

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


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

4

1 回答 1

9

我只是掀起了这种方法。将其添加到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);

这产生:

你好长度 = 5,字符 = 5
表情符号长度 = 11,字符 = 9

于 2013-03-10T23:21:11.423 回答