swift-02-字符串、數組、字典、元組

最近在學習swift,期間也看了不少教程和大神的博客,最後把筆記放這裏,方便查看複習~swift

附上學習資料地址:w3cschool-Swift 教程YungFan大神的簡書(推薦看一下,有些知識點總結地簡直通俗易懂)數組

1、字符串&字符

一、字符串

1.一、介紹

Swift中字符串類型是 String,它是一個結構體,性能更高。支持遍歷markdown

1.二、初始化

不可變字符串:let修飾數據結構

let str = "hello Objective-C"
複製代碼

可變字符串:var修飾app

var str = "hello Swift"
複製代碼

多行字符串oop

var str = """
         靜夜思
         做者:李白
         牀前明月光,疑是地上霜。
         舉頭望明月,低頭思故鄉。
         """
複製代碼

含義轉義字符串性能

/*
若是字符串中包含 反斜槓」\「,有兩種方式解決:
一、兩個反斜槓
二、雙引號外面加 #
*/
//一、兩個反斜槓
let str = "字符串中有\\轉義字符反斜槓\\"

//二、雙引號外面加 #
let str = #"字符串中有\轉義字符反斜槓\"#

複製代碼

1.三、經常使用操做

長度:count 或者 length學習

let str = "12345678"
let len1 = str.count  //8

let len2 = (str as NSString).length  //8
複製代碼

拼接:+ 或者 appendspa

let str1 = "abc" + "cde"

var str2 = "abc"
str2.append("cde")
複製代碼

遍歷:code

//寫法1
let str = "abcdefg"
for char in str {
    print(char)
}

//寫法2
let str = "abcdefg"
for (index, value) in str.enumerated() {
    print("\(index) --- \(value)")
}
複製代碼

大小寫:lowercaseduppercased

let str = "abcdefg"
//所有小寫
print(str.lowercased())  
//所有大寫
print(str.uppercased())  
複製代碼

是否包含字符串:contains

let str = "abcdefg"
print(str.contains("cd"))   //true
print(str.contains("c"))    //true
print(str.contains("o"))    //false

複製代碼

分割:components

let str = "abcdefg$$aaaa$$bbbb$$ccc"
//很明顯分割完是個數組
let desc = str.components(separatedBy: "$$")
for item in desc {
    print(item)
}
複製代碼

替換:replacingOccurrences

let str = "abcdefg$$aaaa$$bbbb$$ccc"
let dest = str.replacingOccurrences(of: "$$", with: "**")
print(dest)
複製代碼

截取子串:

//寫法1:常規寫法
let str = "Hello World"

//截取某字符串的前5個字符串
let sub1 = str.prefix(5)
print(sub1)

//截取某字符串的後5個字符串
let sub2 = str.suffix(5)
print(sub2)
複製代碼
//寫法2,取下標範圍
let str = "Hello World"
        
//截取某字符串的前5個字符串
//先拿到從第一個字符開始,日後 5個字符的下標
let index1 = str.index(str.startIndex, offsetBy: 5)
let sub1 = str[str.startIndex..<index1]
print(sub1)

//截取某字符串的後5個字符串
//先拿到從最後一個字符開始,往前 5個字符的下標
let index2 = str.index(str.endIndex, offsetBy: -5)
let sub2 = str[index2..<str.endIndex]
print(sub2)
複製代碼

二、字符

字符,就是單字符

let char: Character = "A"
複製代碼

注意:

  • 多字符會報錯
  • 空字符會報錯

2、數組

一、介紹

Swift用 Array 表示數組,是一個泛型集合,它是一個結構體,它裏面的元素是有序的,可重複出現

二、初始化

不可變數組:let修飾

let array : [Any] = ["zhangsan", 18]
複製代碼

可變數組:var修飾

// 定義一個可變數組,必須初始化才能使用
var array : [String] = [String]()
複製代碼

初始化格式 (var能夠換成let)

///直接初始化
//常規寫法
var array1: Array<Any> = ["zhangsan", 18]

//簡寫
var array2: [Any] = ["zhangsan", 18]

//若是元素類型一致,也能夠這麼寫
var array3 = ["zhangsan", "lisi"]

///先聲明,再初始化
var array4: Array<Any>
array4 = ["zhangsan", "18"]
複製代碼

空數組初始化

//寫法1
var emptyArray = [String]()  
複製代碼
//寫法2:若是類型信息能夠被推斷,能夠這麼寫
var emptyArray = []
複製代碼

初始化一個Int類型、大小爲三、默認值都爲0的數組

var array = [Int](repeating: 0, count: 3)
        
print(array) //[0, 0, 0]
複製代碼

三、經常使用操做

長度

array.count
複製代碼

長度

array.isEmpty
複製代碼

增長數據

array.append("zhaoliu")
複製代碼

插入數據

array.insert("haojian", at: 0)
複製代碼

修改數據

array[0] = "wangqi"
複製代碼

查找數據:取值

array[1]
array.first
複製代碼

倒序

array.reverse()
複製代碼

合併:+

//建議:同類型的數組進行合併

let array1 = ["zhang", "wang", "li", "zhao"]
        
let array2 = ["san", "si", "wu"]

let array3 = array1 + array2

print(array3)

//打印:["zhang", "wang", "li", "zhao", "san", "si", "wu"]
複製代碼

容量:capacity

// 初始化數組的容量爲0 若是發現容量不夠 會在現有的容量上*2 (若是本來容量爲0,會+2)

var array = [Int]()
        
for i in 0..<8 {

    array.append(i)

    print("\(array)\(array.capacity)")

}
複製代碼

四、遍歷

普通遍歷

for i in 0..<array.count {
    print(array[i])
}
複製代碼

for-in方式

for item in array {
    print(item)
}
複製代碼

區間遍歷

//0、1
for item in array[0..<2] {
    print(item)
}
複製代碼

元組遍歷

let array = ["zhang", "wang", "li", "zhao", "zhou"]
        
for (index, name) in array.enumerated() {
    print("\(index) == \(name)")
}

/*
 打印:
 0 == zhang
 1 == wang
 2 == li
 3 == zhao
 4 == zhou
 */
複製代碼

3、字典

一、介紹

Swift中的字典類型是Dictionary,也是一個泛型集合。它元素之間是無序的不可重複出現,其餘與oc相似

二、初始化

不可變字典:let修飾

//常規寫法
let dict1: Dictionary<String, Any> = ["age": 18,"name": "zhangsan"]

//簡寫
let dict2: [String : Any] = ["age": 18,"name": "zhangsan"]

//若是省略類型,就要在後面加上 as
let dict3 = ["age": 18,"name": "zhangsan"] as [String : Any]
複製代碼

可變字典:var修飾

//常規寫法
var dict1: Dictionary<String, Any> = ["age": 18,"name": "zhangsan"]

//簡寫
var dict2: [String : Any] = ["age": 18,"name": "zhangsan"]

//若是省略類型,就要在後面加上 as
var dict3 = ["age": 18,"name": "zhangsan"] as [String : Any]

//空字典1
var dict4 = [String : int]()
//空字典2
var dict5 = [:]
複製代碼

三、經常使用操做

長度

dict.count
複製代碼

判空

dict.isEmpty
複製代碼

增長數據

var dict = [String : Int]()
dict["height"] = 18
dict["weight"] = 20
print(dict)
複製代碼

刪除數據

//方式1
dict.removeValue(forKey: "height")

//方式2
dict["height"] = nil
複製代碼

修改數據

//方式一
dict["height"] = 55
//方式二
dict.updateValue(99, forKey: "weight")
複製代碼

查詢數據

// 可選型
dict["name"]
複製代碼

合併

//一樣要同類型的,但不能和數組同樣用+號
var dict1: [String : Any] = ["name" : "zhangsan", "age" : 20]

var dict2: [String : Any] = ["height" : 180, "phone" : "18888888888"]

//其實就是把dict2的內容添加到dict1中
for (key, value) in dict2 {
    dict1[key] = value
}

print(dict1) 
//打印:["height": 180, "name": "zhangsan", "phone": "18888888888", "age": 20]
複製代碼

四、遍歷

遍歷字典中全部的值

for value in dict.values {
    print(value)
}
複製代碼

遍歷字典中全部的鍵

for key in dict.keys {
    print(key)
}
複製代碼

遍歷全部的鍵值對

//經常使用
for (key, value) in dict {
    print("\(key) == \(value)")
}
複製代碼

枚舉方式遍歷

var dict: [String : Any] = ["name" : "zhangsan", "age" : 20, "height" : 180, "phone" : "18888888888"]
       
         
//注意:這樣輸出的不是key-value,而是索引和(key:value)
for (index, value) in dict.enumerated() {
    print("\(index) == \(value)")
}

/*
 打印:
 0 == (key: "phone", value: "18888888888")
 1 == (key: "age", value: 20)
 2 == (key: "name", value: "zhangsan")
 3 == (key: "height", value: 180)
 */
複製代碼

4、元組

一、介紹

Swift中特有一種 數據結構,能夠用於定義一組數據,組成元組的數據能夠稱爲 元素

二、定義

常見寫法

//使用元組 來描述一我的的信息
var one = ("zhangsan", 20, "1888888888",180)

//這個元組的元素的類型,分別是:String,Int,String,Int
複製代碼

給元素加上名字

var one = (name: "zhangsan", age: 20, phone: "1888888888",height: 180)

//這個就能夠經過one.name拿到數據
複製代碼

三、簡單使用

用元組來描述一個http錯誤信息

// 寫法一:
let error = (404, "Not Found")

//下標訪問
print(error.0)
print(error.1)
複製代碼
// 寫法二:
let error = (errorCode : 404, errorInfo : "Not Found")
//別名訪問
print(error.errorCode)
print(error.errorInfo)
複製代碼
// 寫法三:
//定義元組變量接收元素的值
let (errorCode, errorInfo) = (404, "Not Found")
print(errorCode)
print(errorInfo)
複製代碼

組合,拆解

//組合
let httpError = (404,"NotFound")

//拆解
let (str1,str2) = httpError

print("第一個參數是\(str1)")
print("第二個參數是\(str2)")

//只拆一個
let (str3,_) = httpError
print("參數是\(str3)")

//根據索引拆
print("索引第一個參數是\(httpError.0)")

//給元組數據命名
let httpStatus = (status:200,des:"成功")

print("打印元組的status:\(httpStatus.status)")
print("打印元組的des:\(httpStatus.des)")
複製代碼
相關文章
相關標籤/搜索