一、基本概念
1、Swift數(shù)組
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
2、ArraySlice數(shù)組片段
ArraySlice是數(shù)組的一個(gè)“指針”,它指向一個(gè)原數(shù)組的片段,包含原數(shù)組的某些位置。在這個(gè)基礎(chǔ)上,我們可以實(shí)現(xiàn)對(duì)原數(shù)組的截取。
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用ArraySlice進(jìn)行截取
let arrSlice = arr[1...3]
//ArraySlice的類型是一個(gè)Slice>對(duì)象
print(type(of: arrSlice)) //Slice>
二、下標(biāo)截取
1、使用整型下標(biāo)對(duì)數(shù)組進(jìn)行截取
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用整型下標(biāo)進(jìn)行截取
let subArr = arr[1...3]
print(subArr) //[130, 140, 150]
2、使用Range下標(biāo)對(duì)數(shù)組進(jìn)行截取
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用Range下標(biāo)進(jìn)行截取
let subArr = arr[1..<3]
print(subArr) //[130, 140]
3、使用切片下標(biāo)對(duì)數(shù)組進(jìn)行截取
切片下標(biāo)語(yǔ)法如下:
arr[startIndex..
其中,startIndex表示起始位置,endIndex表示終止位置,兩個(gè)點(diǎn)(..)表示包含終止位置,三個(gè)點(diǎn)(...)表示不包含終止位置。
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用切片下標(biāo)進(jìn)行截取
let subArr = arr[1...3] //包含終止位置
let subArr2 = arr[1..<3] //不包含終止位置
print(subArr) //[130, 140, 150]
print(subArr2) //[130, 140]
三、截取String類型數(shù)組
1、使用Range下標(biāo)對(duì)數(shù)組進(jìn)行截取
//定義一個(gè)包含字符串?dāng)?shù)據(jù)的數(shù)組
var strArr: Array = ["one", "two", "three", "four", "five"]
//使用Range下標(biāo)進(jìn)行截取
let subArr = strArr[1..<3]
print(subArr) //["two", "three"]
2、使用切片下標(biāo)對(duì)數(shù)組進(jìn)行截取
//定義一個(gè)包含字符串?dāng)?shù)據(jù)的數(shù)組
var strArr: Array = ["one", "two", "three", "four", "five"]
//使用切片下標(biāo)進(jìn)行截取
let subArr = strArr[1...3] //包含終止位置
let subArr2 = strArr[1..<3] //不包含終止位置
print(subArr) //["two", "three", "four"]
print(subArr2) //["two", "three"]
四、使用數(shù)組方法進(jìn)行截取
1、使用prefix方法獲取數(shù)組前幾個(gè)元素
prefix方法語(yǔ)法如下:
arr.prefix(_ maxLength: Int) -> ArraySlice
其中,maxLength表示截取的最大長(zhǎng)度。
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用prefix方法獲取前3個(gè)元素
let subArr = arr.prefix(3)
print(subArr) //[120, 130, 140]
2、使用suffix方法獲取數(shù)組后幾個(gè)元素
suffix方法語(yǔ)法如下:
arr.suffix(_ maxLength: Int) -> ArraySlice
其中,maxLength表示截取的最大長(zhǎng)度。
//定義一個(gè)包含字符串?dāng)?shù)據(jù)的數(shù)組
var strArr: Array = ["one", "two", "three", "four", "five"]
//使用suffix方法獲取后3個(gè)元素
let subArr = strArr.suffix(3)
print(subArr) //["three", "four", "five"]
3、使用dropFirst方法截取數(shù)組頭部元素
dropFirst方法語(yǔ)法如下:
arr.dropFirst(_ k: Int) -> ArraySlice
其中,k表示要截取的元素?cái)?shù)量。
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//使用dropFirst方法截取前兩個(gè)元素
let subArr = arr.dropFirst(2)
print(subArr) //[140, 150, 160]
4、使用dropLast方法截取數(shù)組尾部元素
dropLast方法語(yǔ)法如下:
arr.dropLast(_ k: Int) -> ArraySlice
其中,k表示要截取的元素?cái)?shù)量。
//定義一個(gè)包含字符串?dāng)?shù)據(jù)的數(shù)組
var strArr: Array = ["one", "two", "three", "four", "five"]
//使用dropLast方法截取后兩個(gè)元素
let subArr = strArr.dropLast(2)
print(subArr) //["one", "two", "three"]
五、異常情況處理
1、下標(biāo)越界
當(dāng)截取的范圍超過(guò)數(shù)組邊界時(shí),Swift會(huì)拋出一個(gè)fatal error,需要在代碼中進(jìn)行異常處理。
//定義一個(gè)包含整型數(shù)據(jù)的數(shù)組
var arr: Array = [120, 130, 140, 150, 160]
//下標(biāo)越界異常處理示例
do {
let subArr = arr[1...10] //超過(guò)數(shù)組長(zhǎng)度
print(subArr)
} catch let error {
print(error.localizedDescription) //Index out of range
}
2、使用數(shù)組方法截取空數(shù)組
當(dāng)截取一個(gè)空數(shù)組時(shí),由于沒有任何元素,使用數(shù)組方法進(jìn)行截取將返回一個(gè)空的ArraySlice對(duì)象。需要在代碼中進(jìn)行判斷和處理。
//定義一個(gè)空數(shù)組
var emptyArr: Array = []
//截取空數(shù)組異常處理示例
let subArr = emptyArr.prefix(3)
if subArr.isEmpty {
print("Empty Array") //Empty Array
}