Swift.String.Index是用UTF-16而不是UnicodeScalar计算的?

时间:2017-09-13 18:10:58

标签: string unicode swift3 utf-16 unicode-string

我认为String.Index是使用UnicodeScalar计算的。 但是,当我检查字符串的endIndex只包含一个表情符号时,Index看起来像是UTF-16位置。

let string = "a"
string.utf16.count // 1
string.unicodeScalars.count // 1
print(string.endIndex)
// > Index(_base: Swift.String.UnicodeScalarView.Index(_position: 1), _countUTF16: 0)
// 

let emoji = ""
emoji.utf16.count // 2
emoji.unicodeScalars.count // 1

print(emoji.endIndex)
// > Index(_base: Swift.String.UnicodeScalarView.Index(_position: 2), _countUTF16: 0)
// 

虽然unicodeScalar.count是1,但是position: 2。为什么? 这就像utf16的位置。

0 个答案:

没有答案