count属性返回的字符数不总是与包含相同字符的NSString的length属性相同。 NSString的长度基于字符串的UTF-16表示中的16位代码单元的数量,而不是字符串中Unicode扩展的字形集群的数量。 有人可以用简单的例子来解释它吗?
答案 0 :(得分:0)
创建NSString
时,大多数Unicode字符只能由一个UTF-16代码单元表示(嗯,UCS-2,但足够接近),因此可以合理地假设UTF-16长度与字符串长度相同。因为毕竟,我们怎么能需要超过65,536个字符呢?是的,世界上有很多语言,但65,536仍然非常多,而且...
喔。垃圾。
无论如何,在2017年,您的应用很可能会遇到可能需要多个UTF-16代码单元的字符,因此不能假设字符串的长度与其UTF-16的长度相同缓冲液:
import Foundation
let poo = ""
print("count: \(poo.count)")
print("NSString length: \((poo as NSString).length)")
输出:
count: 1
NSString length: 2