字符串长度
NSString 有一个 length
属性来获取字符数。
NSString *string = @"example";
NSUInteger length = string.length; // length equals 7
与分裂示例一样 ,请记住 NSString
使用 UTF-16来表示字符。长度实际上只是 UTF-16 代码单元的数量。这可以与用户认为的字符不同。
以下是一些可能令人惊讶的案例:
@"é".length == 1 // LATIN SMALL LETTER E WITH ACUTE (U+00E9)
@"é".length == 2 // LATIN SMALL LETTER E (U+0065) + COMBINING ACUTE ACCENT (U+0301)
@"❤️".length == 2 // HEAVY BLACK HEART (U+2764) + VARIATION SELECTOR-16 (U+FE0F)
@"🇮🇹".length == 4 // REGIONAL INDICATOR SYMBOL LETTER I (U+1F1EE) + REGIONAL INDICATOR SYMBOL LETTER T (U+1F1F9)
为了获得用户感知字符的数量,技术上称为“ 字形集群 ”,你必须使用 -enumerateSubstringsInRange:options:usingBlock:
迭代字符串并保持计数。这一点在 Nikolai Ruhe 对 Stack Overflow 的回答中得到了证明。