字串字元文字

Swift 中的字串文字用雙引號(")分隔:

let greeting = "Hello!"  // greeting's type is String

人物可以從字串文字進行初始化,只要文字僅包含一個字形叢集:

let chr: Character = "H" // valid
let chr2: Character = "😊" // valid
let chr3: Character = "abc" // invalid - multiple grapheme clusters

字串插值

字串插值允許將表示式直接注入字串文字。這可以使用所有型別的值來完成,包括字串,整數,浮點數等。

語法是反斜槓,後跟括號包含值:\(value)。任何有效的表示式都可能出現在括號中,包括函式呼叫。

let number = 5
let interpolatedNumber = "\(number)"  // string is "5"
let fortyTwo = "\(6 * 7)"             // string is "42"

let example = "This post has \(number) view\(number == 1 ? "" : "s")"
// It will output "This post has 5 views" for the above example.
// If the variable number had the value 1, it would output "This post has 1 view" instead.

對於自定義型別,字串插值的預設行為"(myobj)" 等效於 String(myobj)print(myobj) 使用相同的表示。你可以通過為你的型別實現 CustomStringConvertible 協議來自定義此行為。

Version >= 3.0

對於 Swift 3,根據 SE-0089String.init<T>(_:) 已更名為 String.init<T>(describing:)

字串插值 "(myobj)" 將更喜歡新的 String.init<T: LosslessStringConvertible>(_:) 初始值設定項,但如果值不是 LosslessStringConvertible 則會回落到 init<T>(describing:)

特殊字元

某些字元需要特殊的轉義序列才能在字串文字中使用它們:

字元 含義
\0 空字元
\\ 一個簡單的反斜槓,\
\t 製表符
\v 垂直標籤
\r 一個回車
\n 一個換行換行
\" 雙引號,"
\' 單引號,'
\u{n} Unicode 程式碼點 n (十六進位制)

例:

let message = "Then he said, \"I \u{1F496} you!\""

print(message) // Then he said, "I 💖 you!"