[swift 進階 advanced swift]讀書筆記-第六章:字串 C7P1 不再固定寬度

liaoWorking在掘金發表於2019-01-27

第七章:字串(String)

注:下面關於characters的介紹在swift 3.2以後廢棄了。String可直接使用characters 的方法。

7.1 不再固定寬度

這一節主要是講字串String底層的東西 我們先明白幾個知識點:

####知識點1:swift中String 是一個結構體 我們主要使用String.Characters, 它是Character的集合,有著類似Array的特性。 ####知識點2:Unicode擁有可變長度的特性 :原因是不同語言的字元存放位元組數不同,若都統一長度,效率太低

字串的展示Demo 關於é 我們可以用兩種Unicode的方式表示字元é

image.png

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如下。

image.png

文章原始檔地址,大家如果有更好的想法和觀點歡迎交流?

相關文章