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 に答える