Swift 4中的字串是一個有序的字元集合,例如"Hello,World!"
。 它們由Swift 4數據類型String
表示,也是由字元類型值的集合來表示。
1. 創建字串
可以使用字串文字或創建String
類的實例來創建字串,如下所示 -
// 使用String文字創建字串
var stringA = "Hello, Swift 4!"
print( stringA )
// 使用String實例創建字串
var stringB = String("Hello, Swift 4!")
print( stringB )
//多行字串
let stringC = """
Hey this is a
example of multiple Line
string by zaixian tutorials
"""
print(stringC)
編譯並執行上述代碼時,會產生以下結果 -
Hello, Swift 4!
Hello, Swift 4!
Hey this is a
example of multiple Line
string by zaixian tutorials
2. 空字元串
可以通過使用空字元串文字或創建String
類的實例來創建空字元串,如下所示。還可以使用布爾屬性isEmpty
檢查字串是否為空。參考以下示例代碼 -
// 使用字串文字創建空字元串
var stringA = ""
if stringA.isEmpty {
print( "stringA is empty" )
} else {
print( "stringA is not empty" )
}
// 使用String實例創建空字元串
let stringB = String()
if stringB.isEmpty {
print( "stringB is empty" )
} else {
print( "stringB is not empty" )
}
編譯並執行上述代碼時,會產生以下結果 -
stringA is empty
stringB is empty
3. 字串常量
可以通過將String分配給變數來指定是否可以修改(或可變)字串,或者通過使用let
關鍵字分配常量,如下所示 -
// stringA can be modified
var stringA = "Hello, Swift 4!"
stringA + = "--Readers--"
print( stringA )
// stringB can not be modified
let stringB = String("Hello, Swift 4!")
stringB + = "--Readers--"
print( stringB )
編譯並執行上述代碼時,會產生以下結果 -
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not
convertible to '@lvalue UInt8'
stringB + = "--Readers--"
4. 字串插值
字串插值是一種通過在字串文字中包含的值。從常量,變數,文字和運算式的混合構造新的字串值的方法。
插入到字串文字中的每個專案(變數或常量)都包含在一對括弧中,首碼為反斜杠。 下麵是一個簡單的例子 -
var varA = 20
let constA = 100
var varC:Float = 20.0
var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
print( stringA )
編譯並執行上述代碼時,會產生以下結果 -
20 times 100 is equal to 2000.0
5.字串連接
可以使用+
運算符來連接兩個字串或字串和一個字元,或兩個字元。 下麵是一個簡單的例子 -
let constA = "zaixian,"
let constB = ".com!"
var stringA = constA + constB
print( stringA )
執行上面示例代碼,得到以下結果:
zaixian,.com!
6. 字串長度
Swift 4字串沒有length
屬性,但可以使用全局的count()
函數來計算字串中的字元數。下麵是一個簡單的例子 -
var varA = "Hello, Swift 4!"
print( "\(varA), length is \((varA.count))" )
執行上面示例代碼,得到以下結果:
Hello, Swift 4!, length is 15
7. 字串比較
可以使用==
運算符來比較兩個字串變數或常量。 下麵是一個簡單的例子 -
var varA = "Hello, Swift 4!"
var varB = "Hello, World!"
if varA == varB {
print( "\(varA) and \(varB) are equal" )
} else {
print( "\(varA) and \(varB) are not equal" )
}
執行上面示例代碼,得到以下結果:
Hello, Swift 4! and Hello, World! are not equal
8.字串迭代
字串又是swift 4中的值集合,因此我們可以使用迴圈遍曆字串。示例代碼如下 -
for chars in "xuhuhu.com" {
print(chars, terminator: " ")
}
執行上面示例代碼,得到以下結果:
Y i i b a i . c o m
9.Unicode字串
可以通過迭代其utf8
和utf16
屬性來訪問字串的UTF-8
和UTF-16
表示,如以下示例所示 -
var unicodeString = "Dog???"
print("UTF-8 Codes: ")
for code in unicodeString.utf8 {
print("\(code) ")
}
print("\n")
print("UTF-16 Codes: ")
for code in unicodeString.utf16 {
print("\(code) ")
}
編譯並執行上述代碼時,會產生以下結果 -
UTF-8 Codes:
68
111
103
63
63
63
UTF-16 Codes:
68
111
103
63
63
63
10.字串函數和運算符
Swift 4支持與字串相關的各種方法和運算符 -
編號 | 方法或操作符 | 描述 |
---|---|---|
1 | isEmpty |
返回一個布爾值,用於確定字串是否為空。 |
2 | hasPrefix(prefix: String) |
用於檢查給定參數字串是否字存在字串首碼。 |
3 | hasSuffix(suffix: String) |
用於檢查給定參數字串是否存在字串尾碼。 |
4 | toInt() |
將數字字串值轉換為整型的函數。 |
5 | count() |
用於計算字串中字元數的全局函數。 |
6 | utf8 |
返回字串的UTF-8 表示的屬性。 |
7 | utf16 |
用於返回字串的UTF-16 表示的屬性。 |
8 | unicodeScalars |
返回字串的Unicode 標量表示的屬性。 |
9 | + |
運算符連接兩個字串,或字串和字元,或兩個字元。 |
10 | += |
運算符將字串或字元附加到現有字串。 |
11 | == |
運算符確定兩個字串的相等性。 |
12 | < |
運算符執行詞典比較以確定一個字串的評估是否小於另一個字串。 |
13 | startIndex |
獲取字串起始索引的值。 |
14 | endIndex |
獲取字串結束索引的值。 |
15 | Indices |
逐個訪問許可權。即字串的所有字元,一個接一個。 |
16 | insert("Value", at: position) |
在某個位置插入值。 |
17 | remove(at: position) ,removeSubrange(range) |
刪除某個位置的值,或從字串中刪除一系列值。 |
18 | reversed() |
返回字串的反轉形式。 |