標籤:style class code color com 使用
Strings and Characters (字串和字元)
字串是一組字元組成的序列,例如“hello, world" 或 "albatross”.在Swift中,字串使用String類型進行聲明,它代表一組由Character(字元)類型組成的值的序列.
String類型和Character類型提供了一種在代碼中處理 (相容Unicode) 文本的快速方式.字串建立和管理的文法與C語言的相似,都屬於輕量級並且可讀性好.字串的拼接只是簡單的 使用加號(+)操作符,而且字串的變化部分可以根據常量或者變數來選擇處理.
儘管文法簡易,但Swift的String類型還是提供了現代的,快速的關於字元的處理工作.每個字串都是由Unicode字元組成,並可以訪問這些字元.
字串中也可以插入常量,變數,文本和運算式.這使得建立個人化的字串來顯示,儲存以及保持更加容易.
注意點:
Swift中的Sting類型與OC中Foundation的NSString類是無縫橋接的.如果你正在使用Cocoa或者Cocoa Touch的Foundation架構,那麼所有調用的NSString API都可以使用String值.也 可以使用String類型值來匹配任何NSString執行個體的API.
String Literals (字串文本)
在你的代碼中,可以包含預先定義的String值(字串文本),它是使用一組雙引號(“”)括住的一個固定文本字元的序列.
字串文本可以用了初始化一個常量或變數:
let someString = "Some string literal value
由於使用了String類型字元文本來給常量 someString進行初始化,因此Swift可以檢查出常量的類型.
字串文本可以包含下面特殊的字元:
- 轉義的特殊字元 \0 (Null 字元), \\ (反斜線), \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 (初始化一個Null 字元串)
建立一個空值的字串,可以通過兩種方式:給變數賦值一個空的文本字串,或者使用初始化文法來初始化一個新的String執行個體:
var emptyString = "" // Null 字元文本
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的編譯器會自動選擇字串的用法,這樣保證字串的副本拷貝行為只在必須的時候才會執行.這就意味著你使用字串的時候可以獲得非常高的效率.
/********************待續......************************/