Количество символов в NSString

мне нужен способ найти количество символов в NSString. Природа моего приложения требует много символов unicode с несколькими символами, что представляет очевидные проблемы для length метод on NSString.

скопировано с веб-сайта разработчика Apple:

Length  
Returns the number of Unicode characters in the receiver. 
- (NSUInteger)length  
Return Value The number of Unicode characters in the receiver.

мне не нужно количество символов как таковых, а скорее количество символов, которое вы увидите, если строка будет распечатана. Некоторые символы, которые я использую в приложении, - это цифры и буквы с overlines, т. е. 0 . В unicode это представлено двумя отдельными символами unicode, однако при печати это один объект. При поиске длины строки Мне нужны символы, такие как 0, чтобы считать только один, а не два, как это было бы с NSString length метод. Есть ли способ сделать это? Спасибо.

1 ответов


Вы можете перечислить символы в строке с :

NSString *string = @"0̄ ";
__block NSUInteger count = 0;
[string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                           options:NSStringEnumerationByComposedCharacterSequences
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                            count++;
                        }];
NSLog(@"%ld %ld", (long)count, (long)[string length]);
// Output: 3 5

как разложенный символ 0, так и Emoji (который также хранится как два символа UTF-16 – так называемая "суррогатная пара") учитываются как один.