Welcome to Swift (蘋果官方Swift文檔初譯與註解十八)---116~122頁(第二章)

Strings and Characters (字符串和字符)框架

  字符串是一組字符組成的序列,例如「hello, world" 或 "albatross」.在Swift中,字符串使用String類型進行聲明,它表明一組由Character(字符)類型組成的值的序列.函數

  String類型和Character類型提供了一種在代碼中處理 (兼容Unicode) 文本的快速方式.字符串建立和管理的語法與C語言的類似,都屬於輕量級而且可讀性好.字符串的拼接只是簡單的  使用加號(+)操做符,並且字符串的變化部分能夠根據常量或者變量來選擇處理.ui

  儘管語法簡易,但Swift的String類型仍是提供了現代的,快速的關於字符的處理工做.每一個字符串都是由Unicode字符組成,並能夠訪問這些字符.this

  字符串中也能夠插入常量,變量,文本和表達式.這使得創建個性化的字符串來顯示,存儲以及保持更加容易.spa

  注意點:scala

  Swift中的Sting類型與OC中Foundation的NSString類是無縫橋接的.若是你正在使用Cocoa或者Cocoa Touch的Foundation框架,那麼全部調用的NSString API均可以使用String值.也  能夠使用String類型值來匹配任何NSString實例的API.code

String Literals (字符串文本)字符串

  在你的代碼中,能夠包含預先定義的String值(字符串文本),它是使用一組雙引號(「」)括住的一個固定文本字符的序列.編譯器

  字符串文本能夠用了初始化一個常量或變量:string

    let someString = "Some string literal value

  因爲使用了String類型字符文原本給常量 someString進行初始化,所以Swift能夠檢查出常量的類型.

  字符串文本能夠包含下面特殊的字符:

  • 轉義的特殊字符 \0 (空字符), \\ (反斜線), \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 scalar U+0024

    let blackHeart = "\u2665"      // ♥,  Unicode scalar U+2665

    let sparklingHeart = "\U0001F496"  // 💖, Unicode scalar U+1F496

    Initializing an Empty String (初始化一個空字符串)

  建立一個空值的字符串,能夠經過兩種方式:給變量賦值一個空的文本字符串,或者使用初始化語法來初始化一個新的String實例:

    var emptyString = ""               // 空字符文本

    var anotherEmptyString = String()  // 初始化語法

    // these two strings are both empty, and are equivalent to each other

  經過查看它們的布爾屬性isEmpty來肯定一個字符串的值是否爲空:

    if emptyString.isEmpty {

        println("Nothing to see here")

    }

    // prints "Nothing to see here」

String Mutability (可變字符串)

  若是但願一個指定的字符串能夠被修改(或可變化),那麼能夠把它賦值給一個變量;若是但願字符串不被改變,那麼把它賦值給一個常量:

    var variableString = "Horse"

    variableString += " and carriage"

    // variableString is now "Horse and carriage"

 

    let constantString = "Highlander"

    constantString += " and another Highlander"

    // this reports a compile-time error - a constant string cannot be modified」

  注意點:

  這與OC中和Cocoa的可變字符串不一樣;OC中一個字符串是否可變,是經過中兩個類之間選擇 (NSString 和NSMutableString )

Strings Are Value Types (字符串本值類型)  /*Value Type:筆者自譯爲:本值類型,參考時請注意!可能有誤*/

  在Swift中,字符串類型是一種本值類型.若是你建立一個新的字符串值,當把它傳遞給一個函數或者方法時,或將它賦值給一個變量或者常量時,會創建這個字符串值的一個拷貝副本.並  且傳遞和賦值都是使用這個副本而非原值.

  注意點:

  Swift中字符串的這種行爲是與Cocoa的NSString方式不一樣.在Cocoa中建立的NSString實例,傳遞給函數或者方法,或者賦值給變量,都是傳遞這個NSString的一個引用,而不是     NSString的拷貝副本(除非你明確的指定要求副本拷貝).

  Swift的默認拷貝(copy-by-default)字符串方式是爲了確保當一個方法或函數傳給你一個字符串值的時候,沒必要關心這個值具體是從哪裏來,均可以確切的保留這個字符串(沒有被改變,  除非你親自修改了它).

  在後臺,Swift的編譯器會自動選擇字符串的用法,這樣保證字符串的副本拷貝行爲只在必須的時候纔會執行.這就意味着你使用字符串的時候能夠得到很是高的效率.

/********************待續......************************/

相關文章
相關標籤/搜索