Swift 數(shù)據(jù)類型之--字符串、字符、數(shù)組、字典

字符串

字符串是一系列字符的集合。例如 “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 來判斷字典是否為空,返回布爾值:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容