Количество символов в 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 – так называемая "суррогатная пара") учитываются как один.