字串字元文字
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-0089 ,String.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!"