I just whipped up this method. Add it to an NSString
category.
- (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);
This yields:
Hello length = 5, chars = 5
🏁 Emoji 📳 length = 11, chars = 9