第七章:字串(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都補充起來。如果專案中有對於的需求,到時候再去補充一下對應的知識點也不遲。