第七章:字串(String)
注:下面關於characters的介紹在swift 3.2以後廢棄了。String可直接使用characters 的方法。
7.1 不再固定寬度
這一節主要是講字串String底層的東西
我們先明白幾個知識點:
####知識點1:swift中String 是一個結構體 我們主要使用String.Characters, 它是Character
的集合,有著類似Array的特性。
####知識點2:Unicode擁有可變長度
的特性 :原因是不同語言的字元存放位元組數不同,若都統一長度,效率太低
字串的展示Demo
關於é
我們可以用兩種Unicode
的方式表示字元é
strA.utf8.elementsEqual(strB.utf8)//false
複製程式碼
注: 只比較編碼單元的最大好處是:效率高很多
。
具體的資料比較這裡沒有做。 不過書上在快很多後面打了個感嘆號。那應該的確是快很多。?
字元蔟(cu四聲。。)和標準等價 grapheme cluster and canonically equivalent
知識點3: 字元蔟: Character 中的編碼點
組合在一起可以組成單個字元蔟(這個就比較偏字元生成的底層了 大概有個印象就行, 以後有需要了可以看看相關文章)
蘋果官方Characters and Grapheme Clusters 文件
知識點4:標準等價: 在上面的Demo中。不管是何種方式生成的é,只看兩個都是顯示為é, 在 Unicode的規範中把這個就叫做“標準等價
”
知識點5: 做國際化
的同學們。OC字串的比較更推薦用compare方法, isEqual方法用上面的不同生成方法比較就會得到false的結果。
demo如下。