Swift 字符串是字符有序集合,如“Hello, World!”,它們是由 Swift 的 String 數(shù)據(jù)類型表示,這也代表字符類型值的集合。
可以通過(guò)使用一個(gè)字符串文字或創(chuàng)建String類的一個(gè)實(shí)例來(lái)創(chuàng)建一個(gè)字符串,如下:
import Cocoa // String creation using String literal var stringA = "Hello, Swift!" println( stringA ) // String creation using String instance var stringB = String("Hello, Swift!") println( stringB )
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Hello, Swift! Hello, Swift!
可以通過(guò)使用一個(gè)空字符串或創(chuàng)建 String 類的一個(gè)實(shí)例來(lái)創(chuàng)建一個(gè)空的字符串,如下所示。還可以檢查一個(gè)字符串是否為空,使用布爾屬性 isEmpty。
import Cocoa // Empty string creation using String literal var stringA = "" if stringA.isEmpty { println( "stringA is empty" ) } else { println( "stringA is not empty" ) } // Empty string creation using String instance let stringB = String() if stringB.isEmpty { println( "stringB is empty" ) } else { println( "stringB is not empty" ) }
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
stringA is empty stringB is empty
可以指定字符串是否可以修改(或突變),通過(guò)將其分配給一個(gè)變量,或者通過(guò)將其使用 let 關(guān)鍵字分配為常量,如下圖所示:
import Cocoa // stringA can be modified var stringA = "Hello, Swift!" stringA + = "--Readers--" println( stringA ) // stringB can not be modified let stringB = String("Hello, Swift!") stringB + = "--Readers--" println( stringB )
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not convertible to '@lvalue UInt8' stringB + = "--Readers--"
字串轉(zhuǎn)換符號(hào)是一種通過(guò)包括字符串文字內(nèi)的值來(lái)構(gòu)造的常量,變量,文本和表達(dá)式來(lái)組合一個(gè)新的字符串值。
每個(gè)項(xiàng)目(變量或常量),插入到字符串被包裹在一對(duì)括號(hào)內(nèi), 一個(gè)反斜杠前綴。下面是簡(jiǎn)單的例子:
import Cocoa var varA = 20 let constA = 100 var varC:Float = 20.0 var stringA = "\(varA) times \(constA) is equal to \(varC * 100)" println( stringA )
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
20 times 100 is equal to 2000.0
可以使用+運(yùn)算符來(lái)連接兩個(gè)字符串或字符串和字符,或兩個(gè)字符。下面是一個(gè)簡(jiǎn)單的例子:
import Cocoa let constA = "Hello," let constB = "World!" var stringA = constA + constB println( stringA )
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Hello,World!
Swift 中字符串沒(méi)有 length 屬性,但可以使用全局count()函數(shù)來(lái)計(jì)算字符串中的字符數(shù)。下面是一個(gè)簡(jiǎn)單的例子:
import Cocoa var varA = "Hello, Swift!" println( "\(varA), length is \(count(varA))" )
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Hello, Swift!, length is 13
可以使用 == 操作符兩個(gè)比較兩個(gè)字符串變量或常量。下面是一個(gè)簡(jiǎn)單的例子:
import Cocoa var varA = "Hello, Swift!" var varB = "Hello, World!" if varA == varB { println( "\(varA) and \(varB) are equal" ) } else { println( "\(varA) and \(varB) are not equal" ) }
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Hello, Swift! and Hello, World! are not equal
可以通過(guò)遍歷在 UTF8 和 UTF16 屬性訪問(wèn)字符串的 UTF-8 和 UTF-16 表示,如下面的示例:
import Cocoa var unicodeString = "Dog?" println("UTF-8 Codes: ") for code in unicodeString.utf8 { print("\(code) ") } print("\n") println("UTF-16 Codes: ") for code in unicodeString.utf16 { print("\(code) ") }
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
UTF-8 Codes: 68 111 103 226 128 188 240 159 144 182 UTF-16 Codes: 68 111 103 8252 55357 56374
Swift 支持多種方法,和運(yùn)算符相關(guān)的字符串:
| S.No | 函數(shù)/操作符及用途 |
|---|---|
| 1 |
isEmpty 返回一個(gè)布爾值,確定該字符串是否為空 |
| 2 |
hasPrefix(prefix: String) 函數(shù)檢查給定的參數(shù)字符串是否以 string 為前綴 |
| 3 |
hasSuffix(suffix: String) 函數(shù)檢查給定的參數(shù)字符串是否以 string 為后綴 |
| 4 |
toInt() 函數(shù)將數(shù)字字符串值轉(zhuǎn)換成整數(shù) |
| 5 |
count() 全局函數(shù)用來(lái)計(jì)算字符串中的字符數(shù) |
| 6 |
utf8 屬性返回一個(gè)字符串的 UTF-8 表示 |
| 7 |
utf16 屬性返回一個(gè)字符串的 UTF-16 表示 |
| 8 |
unicodeScalars 屬性返回一個(gè)字符串的 Unicode 標(biāo)表示 |
| 9 |
+ 運(yùn)算符用來(lái)連接兩個(gè)字符串,或者一個(gè)字符串和一個(gè)字符或兩個(gè)字符 |
| 10 |
+= 操作符要追加一個(gè)字符串或字符到一個(gè)現(xiàn)有的字符串 |
| 11 |
== 操作符以確定兩個(gè)字符串是否相等 |
| 12 |
< 操作符進(jìn)行逐一比較,計(jì)算以確定一個(gè)字符串是否為小于另一個(gè) |
| 13 |
== 操作符以確定兩個(gè)字符串是否相等 |