(四) [Swift]Swift中的字符串

1.字符串的初始化

//初始化一個空字符串
let str = ""
let str1 = String()

//直接
let swift = "swift"

//通過character數組 
//ps: String可以和character數組互相轉換 eg.swift.characters
let swiftInChar:[Character] = ["S","w","i","f","t"]
let swift2  = String(swiftInChar)

//通過反斜杠組建
//注意: 反斜杠的括號內不能有 '\' '回車' 等
let name = "六道"
let swift3 = "hellow \(name)"   

2.unicode

swift中可以通過一個unicode編碼來初始化一個字符串

let e = "\u{e9}"              //é
let e1 = "\u{65}\u{301}"      //é
let e3 = e1 + "\u{20DD}"      //é? :這里是有個圓圈包裹著,markdown顯示不出來

3.字符串是值類型

與OC中不同,這里的字符串是一個值類型,意思是當一個字符串作為一個函數的參數時,其值會被拷貝。函數內的變化永遠不會影響到該字符串本身。

4.遍歷字符串

var test = "你好 swift"
//方式一
for t in test.characters{
    print(t)
}
//方式二
test.characters.forEach { (c) in
    print(c)
}
//方式三,這種方式可以得到遍歷過程中的索引
for index in test.characters.indices{
    print("\(index) \(test[index])")
}

4.字符串中的索引

每一個字符串都是由一個或多個字符組成,每一個字符由一個或者多個Unicode標量組成。所以每個字符串本質上都是由Unicode標量序列組成。

(1) characters.count和.endIndex的值并不總是相等

let e = "\u{65}\u{301}"  //é
e.endIndex               //2
e.characters.count       //1

(2) 索引:指向字符串中的某個字符的第一個Unicode標量所在的位置。類型為String.index

//如(1)中所示常量e由兩個unicode組成,而它的字符的數量卻為1
//再舉例說明
let e1 = "\u{65}\u{301}"
let e3 = e1 + "n" + e1 + "n"

e3.endIndex  //6
e3.endIndex.predecessor() //5
e3.endIndex.predecessor().predecessor() //3
e3.endIndex.predecessor().predecessor().predecessor() //2
e3.endIndex.predecessor().predecessor().predecessor().predecessor()//0
e3.characters.count //4

(3)索引的相關操作

index.predecessor() //獲取上一個索引
index.successor() //獲取下一個索引
index.advancedBy(i) //獲取第下i個索引
e3.startIndex.distanceTo(end: String.CharacterView.Index) //距離某個index有多少個單位

5.字符串中插入和刪除

Paste_Image.png

6.字符串判等
當字符串中的unicode標量值一致且順序一樣才會相等

6E631297-2C3A-44CD-A36B-245AD2B01048.png

7.前綴和后綴

CF930DBF-9561-466B-809F-D51B0A6A4E1B.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容