Swift中字符串的存储机制与其它语言不同,采用的不是固定字节方式存储字符,每个字符占用的字节数可能不同。
当我们需要知道一个字符串有多少字符串时,我们往往想知道的是我们所看到的字符数,而非存储的字节数。
一个字符可能需要1,2,3,4个字节来存储。
英文:1个字节
xxx: 2 个字节? --- 没找到例子
中文:3个字节
emoji表情字符:4个字节
charaters.count表示有多少字符,也就是我们所见到有几个字符,而不关心其存储方式。
与unicodeScalars.count是一样的。
for codeUnit in language.utf8
{
print("utf8:\(codeUnit) ", terminator: "")
}
print("\n")
for codeUnit in language.utf16
{
print("utf16:\(codeUnit) ", terminator: "")
}
结果:
utf8:83 utf8:119 utf8:105 utf8:102 utf8:116 utf8:232 utf8:175 utf8:173 utf8:232 utf8:168 utf8:128
utf16:83 utf16:119 utf16:105 utf16:102 utf16:116 utf16:35821 utf16:35328
为了方便使用,我们可以扩展String的属性:
//自定义字符串长度的计算属性
extension String
{
var length: Int {
return self.characters.count
}
}
language.length //returns 7
我们再看看官方的例子,说的比较清楚: