字符串
字符串是一系列字符的集合。例如 “hello world!” 這樣的有序的字符類型的值的集合,他的數(shù)據(jù)類型為 String。
創(chuàng)建字符串
你可以通過使用字符串字面量或者 String 類的實例來創(chuàng)建一個字符串:
///使用字符串字面量
var stringA = "hello world!"
print( stringA)
///String 實例化
var stringB = String("hello world")
print( stringB)
以上程序執(zhí)行輸出的結(jié)果為:
hello world!
hello world!
空字符串
你可以使用空的字符串字面量賦值給變量或初始化一個 String 類的實例來初始值一個空的字符串。我么可以使用字符串屬性 isEmpty 來判斷字符串是否為空:
///使用字符串字面量創(chuàng)建空字符串
var stringA = ""
if stringA.isEmpty {
print("StringA 是空的")
} else {
print("StringA 不是空的")
}
/// 實例化 String類來創(chuàng)建空字符串
let StringB = String()
if stringB.isEmpty {
print("StringB 是空的")
} else {
print("StringB 不是空的")
}
輸出的結(jié)果為:
stringA 是空的
stringB 是空的
字符串常量
你可以將字符串賦值給一個變量或者常量,變量時可以修改的,常量是不可以修改的。
/// stringA 可修改的
var stringA = "小錢五號"
stringA += "很好"
print(stringA)
/// stringB 不能修改的
let stringB = String("小強(qiáng)五號:")
stringB += "很好"
print( stringB)
以上程序執(zhí)行輸出結(jié)果會報錯,因為 stringB 為常量是不能被修改的:
error: left side of mutating operator isn't mutable: 'stringB' is a 'let' constant
stringB += "很好"
字符串中插入值
字符串插值是一種構(gòu)建新字符串的方式,可以在其中包含常量、變量、字面量和表達(dá)式。 您插入的字符串字面量的每一項都在以反斜線為前綴的圓括號中:
var A = 20
let B = 100
var C:Float = 10.0
var StringA = "\(A) * \(B) = \(C) * 200"
print(StringA)
輸出結(jié)果為:
20 * 100 = 2000.0
字符串拼接
字符串可以通過 + 號來連接,實例如下:
字符串長度
字符串長度使用 String.count 屬性來計算,實例如下:
字符串比較
你可以使用 == 來比較兩個字符串是否相等:
Unicode 字符串
Unicode 是一個國際標(biāo)準(zhǔn),用于文本的編碼,Swift 的 String 類型是基于 Unicode建立的。你可以循環(huán)迭代出字符串中 UTF-8 與 UTF-16 的編碼,實例如下:
var unicodeString = "小強(qiáng)五號"
print("UTF-8 編碼: ")
for code in unicodeString.utf8 {
print("\(code) ")
}
print("\n")
print("UTF-16 編碼: ")
for code in unicodeString.utf16 {
print("\(code) ")
}
以上程序執(zhí)行輸出結(jié)果為:
UTF-8 編碼:
232
143
156
233
184
159
230
149
153
231
168
139
UTF-16 編碼:
33756
40479
25945
31243
字符串函數(shù)及運(yùn)算符
Swift 支持以下幾種字符串函數(shù)及運(yùn)算符:
| 序號 | 函數(shù)/運(yùn)算符&描述 |
|---|---|
| 1 |
isEmpty 判斷字符串是否為空,返回布爾值 |
| 2 |
hasPrefix(prefix:String) 檢查字符串中是否擁有特定前綴 |
| 3 |
hasSuffix(suffix:String) 檢查字符串中是否擁有特定后綴 |
| 4 |
Int(String) 轉(zhuǎn)換字符串中為整型。實例: let myString: String = "256" ; let myInt: Int? = Int(myString)
|
| 5 |
String.count 計算字符串的長度 |
| 6 |
utf8 您可以通過病例String的uft8屬性來訪問他的 UTF-8 編碼 |
| 7 |
utf16 您可以通過病例String的uft16屬性來訪問他的 UTF-16 編碼 |
| 8 | ** unicodeScalars** 您可以通過遍歷String值的unicodeScalars屬性來訪問它的 Unicode 標(biāo)量編碼. |
| 9 |
+ 連接兩個字符串,并返回一個新的字符串 |
| 10 |
+= 連接操作符兩邊的字符串并將新字符串賦值給左邊的操作符變量 |
| 11 |
== 判斷兩個字符串是否相等 |
| 12 |
< 比較兩個字符串,對兩個字符串的字母逐一比較 |
| 13 |
!= 比較兩個字符串是否不相等 |
字符(Character)
Swift 的字符是一個單一的字符字符串字面量,數(shù)據(jù)類型為 Character。
let char1: Character = "A"
let char2: Character = "B"
print("char1 的值為 \(char1)")
print("char2 的值為 \(char2)")
以上程序執(zhí)行輸出結(jié)果為:
char1 的值為 A
char2 的值為 B
如果你想在 Character(字符) 類型的常量中存儲更多的字符,則程序執(zhí)行會報錯
空字符串變量
Swift 中不能創(chuàng)建空的 Character(字符) 類型變量或常量:
遍歷字符串中的字符
Swift 的 String 類型表示特定序列的 Character(字符) 類型值的集合。 每一個字符值代表一個 Unicode 字符。您可通過for-in循環(huán)來遍歷字符串中的characters屬性來獲取每一個字符的值:
字符串連接字符
以下實例演示了使用 String 的 append() 方法來實現(xiàn)字符串連接字符:
var varA:String = "Hello "
let varB:Character = "G"
varA.append( varB )
print("varC = \(varA)")
以上程序執(zhí)行輸出結(jié)果為:
varC = Hello G
Swift 數(shù)組
Swift 數(shù)組使用有序列表儲存同一類型的多個值。相同的值可以出現(xiàn)在一個數(shù)組的不同位置中。Swift 數(shù)組會強(qiáng)制檢測元素的類型,如果類型不同則會報錯,Swift 數(shù)組應(yīng)該遵循Array<Element>這樣的行駛,其中Element是這個數(shù)組中唯一允許存在的數(shù)據(jù)類型。
如果創(chuàng)建一個數(shù)組,并賦予給一個變量,則創(chuàng)建的集合就是可以修改的。這意味在創(chuàng)建數(shù)組后,可以通過 增刪改查 的方式改變數(shù)組里的對象。如果講一個數(shù)組賦值給一個常量,數(shù)組就不可以更改,并且數(shù)組的大小和內(nèi)容都不可以修改。
創(chuàng)建數(shù)組
我們可以使用構(gòu)造語法來創(chuàng)建一個由特定數(shù)據(jù)類型構(gòu)成的空數(shù)組:
var someArray = [someType](repeating:InitialValue,count: NumberOfElements)
以下實例創(chuàng)建了一個類型為 Int,數(shù)量為 3,初始值為 0 的空數(shù)組
var someInts = [Int](repeating: 0, count: 3)
以下實例創(chuàng)建了含有三個元素的數(shù)組:
var someInts:[Int] = [10,20,30]
訪問數(shù)組
我們可以根據(jù)數(shù)組的索引來訪問數(shù)組的元素,語法如下:
var someVar = someArray[index]
index索引從 0 開始, 即索引 0 對應(yīng)的是第一個元素,索引 1 對應(yīng)第二個元素,以此類推。
修改數(shù)組
你可以使用 append() 方法或者賦值運(yùn)算符 += 在數(shù)組末尾添加元素,如下所示,我們初始化一個數(shù)組,并向其添加元素,
通過索引修改數(shù)組元素的值
遍歷數(shù)組
我們可以使用for-in循環(huán)來遍歷所有數(shù)組中的數(shù)據(jù)項:
如果我們同時需要每個數(shù)據(jù)項的值和索引,可以使用 String 的 enumerate() 方法來進(jìn)行數(shù)組遍歷。
var someInts: [Int] = [10,20,30,40,50,60];
someInts.append(70)
someInts.insert(0, at: 0)
someInts += [110]
someInts[2] = 200
for (index, item) in someInts.enumerated() {
print("在 index = \(index) 的位置上的值為 \(item)")
}
輸出的結(jié)果為:
在 index = 0 的位置上的值為 0
在 index = 1 的位置上的值為 10
在 index = 2 的位置上的值為 200
在 index = 3 的位置上的值為 30
在 index = 4 的位置上的值為 40
在 index = 5 的位置上的值為 50
在 index = 6 的位置上的值為 60
在 index = 7 的位置上的值為 70
在 index = 8 的位置上的值為 110
合并數(shù)組
我們可以使用加法操作符 (+)來合并兩種已經(jīng)存在的相同類型數(shù)組。新數(shù)組的數(shù)據(jù)類型會從兩個數(shù)組的數(shù)據(jù)類型中推斷出來
count屬性
我們可以使用 count 屬性來計算數(shù)組元素個數(shù):
isEmpty 屬性
我們可以通過只讀屬性 isEmpty 來判斷數(shù)組是否為空,返回布爾值:
Swift字典
Swift 字典用來儲存無序的相同類型數(shù)據(jù)集合,Swift字典會強(qiáng)制檢測元素的類型,如果類型不同則會報錯。
Swift 字典每個值 (value)都關(guān)聯(lián)唯一的?。╧ey),鍵作為字典中的這個值數(shù)據(jù)的標(biāo)識符。
和數(shù)組中的數(shù)據(jù)項不同,字典中的數(shù)據(jù)項并沒有具體順序。我們需要通過標(biāo)識符(鍵)訪問數(shù)據(jù)的時候使用字典,這種方法很大程度上和我們現(xiàn)實世界中使用字典查字義的方法一樣。
Swift 字典的 key 沒有類型限制可以是整形或字符串,但是必須唯一的、
如果創(chuàng)建一個字典,并賦值一個變量,則創(chuàng)建的字典就是可以修改的。這意味著在創(chuàng)建字典后,可以通過增刪改查的方法改變字典里的項目。如果講一個字典賦值個常量,字典就不可以修改,并且字典的大小和內(nèi)容都不可以修改。
創(chuàng)建字典
我們可以使用以下語法來創(chuàng)建一個特定類型的空字典:
var someDict = [keyType : valueType]()
以下是創(chuàng)建一個空字典,健的類型為Int,值的類型為 String 的簡單語法:
var someDict = [Int:String]()
以下為創(chuàng)建一個字典的實例:
var someDict:[Int:String] = [1:"one",2:"two",3:"three"]
訪問字典
我們可以根據(jù)字典的索引來訪問數(shù)組的元素,語法如下:
var someVar = someDict[key]
修改字典
我們可以使用 updateValue(forKey:) 增加或更新字典的內(nèi)容。如果 key 不存在,則添加值,如果存在修改 key 對應(yīng)的值。updateValue(_:forKey)方法返回Optional值。
也可以直接通過指定的 key 來修改字典的值
移除 Key-Value(鍵值對)removeValueForKey()方法來移除字典key-value對,如果key存在該方法返回移除的值,如果不存在返回 nil。也可以通過指定的鍵的值為 nil 來移除 key-value (鍵-值)對
遍歷字典
我們可以使用 for-in 循環(huán)來遍歷某個字典中的鍵值對
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict {
print("字典 key \(key) - 字典 value \(value)")
}
打印結(jié)果為:
字典 key 2 - 字典 value Two
字典 key 3 - 字典 value Three
字典 key 1 - 字典 value One
我們也可以使用enumerate()方法來進(jìn)行字典遍歷,返回的是字典的索引及 (key, value) 對,實例如下:
var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
for (key, value) in someDict.enumerated() {
print("字典 key \(key) - 字典 (key, value) 對 \(value)")
}
打印結(jié)果為:
字典 key 0 - 字典 (key, value) 對 (2, "Two")
字典 key 1 - 字典 (key, value) 對 (3, "Three")
字典 key 2 - 字典 (key, value) 對 (1, "One")
字典轉(zhuǎn)換為數(shù)組
你可以提取字典的鍵值(key-value)對,并轉(zhuǎn)換為獨(dú)立的數(shù)組。someDict.keys key的數(shù)組,someDict.values value的數(shù)組
count屬性
我們可以使用只讀的 count 屬性來計算字典有多少個鍵值對:
isEmpty 屬性
我們可以通過只讀屬性 isEmpty 來判斷字典是否為空,返回布爾值: