Swift語言指南(十) Swift語言的字串與字元

來源:互聯網
上載者:User

字串是一段字元的有序集合,如"hellow,world"或"信天翁"。Swift 中的字串由 String 類型表示,對應著 Character 類型值的集合。

Swift 中的 String 類型為你的編程提供了一個高速的,相容 Unicode規範 的文本處理方式。Swift 建立和處理字串的文法輕量可讀,與 C 語言的字串文法頗為相似。字串的拼接非常簡單,只需將兩個字串用 + 運算子相加。字串的值是否可變取決於其為常量還是變數,這一點與 Swift 中的其它類型一致。

Swift 的 String 類型除了文法簡潔之外,還是一個高速,現代化的字串實現方案。每個字串均由編碼獨立的 Unicode 字元組成,每個字元均支援以不同的 Unicode 表達形式訪問。

Swift 的字串還支援在較長的字串中插入常量、變數、字面量以及運算式的值,該過程稱為字串插入。這使得顯示、儲存以及輸出自訂的字串值更加簡便。

註:

Swift 的 String 類型與底層 Foundation 的 NSString 類無縫銜接。如果你在 Cocoa / Cocoa Touch 中使用 Foundation 架構,那麼,除了本章提到的 String 特性之外,對建立的任何 String 值,均可調用到 NSString 類的全部 API。還可以將 String 值傳遞給任何需要 NSString 執行個體的 API 方法。

更多 String 與 Foundation / Cocoa 架構結合使用的資訊,請見 Swift 與 Cocoa 及 Objective-C 的結合(這一部分內容在本書之外,譯完本書再譯)。

字串字面量

代碼中可以在預先定義的 String 值中嵌入字串字面量(string literal)。字串字面量是由一對雙引號("")包圍的文本字元的固定序列。

字串字面量可以為一個常量或變數提供初始值:

let someString = "Some string literal value"

注意,Swift 推斷常量 someString 為 String 類型,因為 someString 的值被一個字串字面量初始化了。

字串字面量涵蓋了下述特殊字元:

· 轉義過的特殊字元: \0(null 字元),\\ (反斜線,轉義後應為單斜杠--Joe.Huang),\t(水平定位字元),\n(分行符號),\r(斷行符號符),\"(雙引號)以及 \'(單引號)

· 單位元組的 Unicode 標量,寫作 \xnn,其中 nn 為兩個十六進位數位

· 雙位元組的 Unicode 標量,寫作 \unnnn,其中 nnnn 為四個十六進位數位

· 四位元組的 Unicode 標量,寫作 \Unnnnnnnn,其中 nnnnnnnn 為八個十六進位數位

下面的代碼展示了這幾種特殊字元的例子。常量 wiseWords 包含兩個轉義後的雙引號字元。常量 dollarSign、blackHeart 以及 sparklingHeart 展示了 Unicode 標量字元的三種不同書寫格式:

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
// 輸出 "想象力比知識更重要" - 愛因斯坦
let dollarSign = "\x24" // 輸出 $, Unicode 標量 U+0024
let blackHeart = "\u2665" // 輸出 , Unicode 標量 U+2665
let sparklingHeart = "\U0001F496" // 輸出 , Unicode 標量 U+1F496

初始化一個Null 字元串

建立一個較長的字串,第一步,需要建立一個空的 String 值,你既可以將Null 字元串字面量賦值給一個變數,也可以用初始化文法初始化一個新的 String 執行個體:

1 var emptyString = ""               // Null 字元串字面量 2 var anotherEmptyString = String()  // 初始化文法 3 // 這兩個字串對象都是空值, 互相等同

你可以使用 isEmpty 屬性檢測字串的值是否為空白:

1 if emptyString.isEmpty { 2     println("Nothing to see here") 3 } 4 // 輸出 "什麼都沒看到"

字串的可變性

一個特定 String 的值是否可以修改(即可變,mutable),可通過聲明將其賦值給一個變數(可以修改)或常量(不可修改):

var variableString = "Horse"variableString += " and carriage"// variableString 的值現在為 "Horse and carriage"     let constantString = "Highlander"constantString += " and another Highlander"// 編譯錯誤 - 常量 string 的值不可更改

註:

該實現方案與 Objective-C / Cocoa 的字串可變性有所不同,後者是通過在執行個體所屬的兩個類中二選一(NSStringNSMutableString)來聲明字串是否可變。

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.