2015-04-23 22 views

回答

6

這是因爲Swift使用Extended Grapheme Clusters。 Swift將笑臉視爲一個字符,但NSString方法將其視爲兩個Unicode字符,儘管它們是「組合」並表示單個符號。

6

我認爲最好的documentation說它:

字符數由計數返回(_ :)函數並不總是與包含相同字符的NSString的length屬性相同。 NSString的長度基於字符串的UTF-16表示中16位代碼單元的數量,而不是字符串中Unicode擴展字形羣集的數量。爲了反映這一事實,NSString的length屬性在Swift String值上訪問時稱爲utf16Count。

+3

在Swift 1.2中'utf16Count'不再存在,它現在是'count(str.utf16)'。 –