本教程屬於 Swift 系列
字串是程式設計中最常用的工具之一。
在 Swift 中,可以使用字串文字語法來定義一個字串:
let name = "Roger"
我們使用雙引號來定義字串。單引號是不合法的字串界定符。
一個字串可以跨越多行,使用三個雙引號:
let description = """
a long
long
long description
"""
你可以使用字串插補 (string interpolation) 在字串中嵌入表達式:
let age = 8
let name = """
Roger, 年齡 \(age)
明年他將會是 \(age + 1) 歲
"""
使用 +
運算子來連接兩個字串:
var name = "Roger"
name = name + " The Dog"
使用 +=
運算子將文字附加到字串:
var name = "Roger"
name += " The Dog"
或者使用 append(_:)
方法:
var name = "Roger"
name.append(" The Dog")
你可以使用 count
屬性來計算字串中的字符數:
let name = "Roger"
name.count // 5
任何字串都附帶了一組有用的方法,例如:
removeFirst()
:刪除第一個字符removeLast()
:刪除最後一個字符lowercased()
:獲取一個新的小寫字串uppercased()
:獲取一個新的大寫字串starts(with:)
:如果字串以特定的子字串開始,則返回 truecontains()
:如果字串包含特定的字符,則返回 true
以及許多其他方法。
當你需要參考字串中的某個項目時,由於 Swift 中的字串是 Unicode 編碼,我們無法像 let name = "Roger"
中的字母 o
使用 name[1]
簡單地引用它。你需要使用索引來處理。
任何字串都提供了起始索引,使用 startIndex
屬性:
let name = "Roger"
name.startIndex // 0
要計算字串中的特定索引,請使用 index(_:offsetBy:)
方法計算:
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name[i] // "g"
索引也可以用於獲取子字串:
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name.suffix(from: i) // "ger"
// 或者使用下標索引:
name[i...] // "ger"
當你從字串中獲取子字串時,其結果的類型是 Substring
,而不是 String
。
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
print(type(of: name.suffix(from: i)))
// Substring
由於內部使用了相同的記憶體結構,子字串更省去記憶體,因此更加高效,但在處理大量字串時需要小心,因為你還是可以進行優化。
字串是集合,可以在迴圈中迭代它們。