[swift 進階]讀書筆記-第六章:字串 C7P2 字串和集合

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

第七章:字串(String)

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

7.2 字串和集合

這一節主要講String和陣列的聯絡,一些特性,以及像split、map等高階用法的Demo

String為嘛不是集合的原因:

String如果屬於集合的話,會給人一種String的集合方法完全安全且符合Unicode規範的暗示。然鵝,在某些情況下遍歷字串可能會出現錯誤的結果。 引申:不建議直接給String 新增集合特性的一些協議(第二章中提到的集合協議)。因為這樣並不安全。

為嘛String 不支援通過下標操作符Str[i]來替換字元。

這個就和上一節降到的String不固定寬度有關。可能插入的新字串寬度不相同,這個字串後面的字串的位置就要往前或者往後移動。這樣是很耗效能的。 所以就算是一個字串也必須要使用replaceRange

####知識點1:避免給String新增像Str[i] 的索引的類擴充套件, 這樣低效,複雜度是O(n的平方)。如果真的想用的話直接用Str.characters[i]就行。 String的集合特性全靠characters屬性夯。

字串與切片

回顧一下:在array上做切片操作返回的不是array,而是arraySlice

我們可以通過自定義split 達到如下的效果:拆分出句子中的單詞成一個陣列

"hello,world!".split(separators:" !,").map(String.init) //["hello","world"]
複製程式碼

其中的split方法為自定義的。swift標準庫中並沒有。這個就不敲了,主要是知道有這個用法就行。 後期補充的playground會把這些demo都補充起來。如果專案中有對於的需求,到時候再去補充一下對應的知識點也不遲。

相關文章