字符串的操作
“let greeting = "Hello, world!"
let index = greeting.firstIndex(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]
// beginning 的值为 "Hello"
// 把结果转化为 String 以便长期存储。
let newString = String(beginning)”
字符串截取:
let index1:String.Index = stre.index(before: stre.endIndex)
let index2:String.Index = stre.index(stre.endIndex, offsetBy: -2)
let str22 = stre[index2...index1]
获取某个字符:
var afterChar = indexStr[indexStr.index(after: startIndex)] // e
字符串的常用方法
https://blog.csdn.net/java_android_man/article/details/121070460
range的范围 startIndex...indexStr.index(startIndex, offsetBy: 13)
数组
定义二维数组
matrix:[[Int]],
matrix[row][column]
var visited = Array(repeating: Array(repeating: false, count: matrix[0].count), count: matrix.count)
matrix[row][col] == path[path.index(path.startIndex, offsetBy: pathIndex)] && !visited[row][col]) {
**数组的常用方法 **
创建var array4 = Array(repeating: "swift", count: 3) // ["swift", "swift", "swift"]
创建
var array1: [Int] = [] // []
var arrya2: Array<Int> = [1, 2, 3] // [1, 2, 3]
var arryaInt = [1, 2, 3] // [1, 2, 3]
数组相加 +
数组为空isEmpty
数组截取 var subArray = array[1...2] // [2, 3]
数组的元素:
// 获取第一个元素
var firstEle = array.first // 1
// 获取最后一个元素
var lastEle = array.last // 8
常用方法
// 当数组声明为可变时,才能使用增,删,改等方法,常量数组不能进行修改相关操作
var array = [1, 2, 3, 4, 5, 6, 7, 8]
print(array.count) // 8
// 判断数组是空数组
if array.isEmpty {
print("array is empty")
} else {
print("array is not empty")
}
// 通过下标访问元素
var ele = array[1] // 2
// 截取新数组
var subArray = array[1...2] // [2, 3]
// 获取第一个元素
var firstEle = array.first // 1
// 获取最后一个元素
var lastEle = array.last // 8
// 修改下标对应的元素
array[1] = 22
array // [1, 22, 3, 4, 5, 6, 7, 8]
// 修改指定范围的元素
array[0...2] = [1, 2, 3] // [1, 2, 3]
// 追加单个元素
array.append(9) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 追加一组元素
array.append(contentsOf: [10, 11, 12]) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 在指定位置插入单个元素
array.insert(0, at: 0) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 在指定位置插入一组元素
array.insert(contentsOf: [-3, -2, -1], at: 0) // [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 移除指定元素
array.remove(at: 1) // -2
// 移除一组元素
array.removeSubrange(0...2) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 移除首个元素
array.removeFirst() // 1
// 移除末尾元素
array.removeLast() // 12
// 移除前几个元素
array.removeFirst(3) // [5, 6, 7, 8, 9, 10, 11]
// 移除后几个元素
array.removeLast(3) // [5, 6, 7, 8]
// 替换指定范围的元素
array.replaceSubrange(0...3, with: [1, 2, 3, 4]) // [1, 2, 3, 4]
// 判断包含指定元素
if array.contains(3) {
print("array contains 3")
}
// 移除所有元素
array.removeAll() // []
var sortArr = [2, 1, 3, -1]
// 从小到大排序
sortArr.sorted(by: <) // [-1, 1, 2, 3]
// 从大到小排序
sortArr.sorted(by: >) // [3, 2, 1, -1]
// 获取数组最大值
sortArr.min() // -1
// 获取数组最小值
sortArr.max() // 3
数组的遍历
let arr = [11, 22, 33]
for item in arr {
print(item)
}
// 打印数组的下标及对应元素
for item in arr.enumerated() {
print(item) // (offset: 0, element: 11) (offset: 1, element: 22) (offset: 2, element: 33)
}
// 下标遍历
for index in arr.indices {
print(arr[index])
}
https://blog.csdn.net/java_android_man/article/details/121133090
字典
var dic1=[1:1,2:12,3:32,4:16,5:15]
var dic2:Dictionary<String,String>=[:]
var dic3=Dictionary<String,String>()
var dic4=[String : String]()
//1 读取字典元素
var test1Dic=["key1":"你好","key2":"Swift","key3":"正在学习","key4":"字典","key5":"取值",]
var test1Str=test1Dic["key2"]
println("\(test1Str)")
//此处取字典中未定义的键 不会报错,取出来的值为nil
var test1Str2=test1Dic["key"]
println("\(test1Str2)")
//2 获取字典元素的个数
println(test1Dic.count)
//3 增加字典的元素
test1Dic["key"]="test"
println(test1Dic)
//4 删除字典中的元素
test1Dic.removeValueForKey("key1")
println(test1Dic)
//5 修改字典中的元素
// 5.1 直接修改
test1Dic["key"]="testkey"
// 5.2 使用 updateValue
var oldStr=test1Dic.updateValue("testkeytest", forKey: "key")
println(oldStr)
println(test1Dic)
//6 遍历
//6.1遍历所有的键值对
for (key,value) in test1Dic{
println("key:\(key) value:\(value)")
}
//6.2 遍历所有的键
for test6Str in test1Dic.keys{
println(test6Str)
}
//6.2 遍历所有的值
for test6Str2 in test1Dic.values{
println(test6Str2)
}
//7 字典转数组
//7.1 将所有的键转为数组
var test7Keys=Array(test1Dic.keys)
println(test7Keys)
//7.1 将所有的值转为数组
var test7Values=Array(test1Dic.values)
println(test7Values)
swift 字典常用方法
https://blog.csdn.net/qq_32582087/article/details/49737755
https://wenku.baidu.com/view/2eef2223874769eae009581b6bd97f192279bf3a.html
集合
** 集合的常用**
https://wenku.baidu.com/view/92af6034f9d6195f312b3169a45177232f60e4d0.html
import UIKit
var greeting = "Hello, playground"
// 集合类型:集合 Set
// 不关注顺序,但不可以重复
// 创建Set
var set: Set<Int> = [1, 2, 3]
var set2 = Set(arrayLiteral: 1, 2, 3)
// set 获取最大值
set.max()
// set 获取最小值
set.min()
// 获取第一个元素,顺序不定
set[set.startIndex]
set.first
// 通过下标获取元素,只能向后移动,不能向前
// 获取第二个元素
set[set.index(after: set.startIndex)]
// 获取某个下标后几个元素
set[set.index(set.startIndex, offsetBy: 2)]
// 获取元素个数
set.count
// 判断空集合
if set.isEmpty {
print("set is empty")
}
// 判断集合是否包含某个元素
if (set.contains(3)) {
print("set contains 3")
}
// 插入
set.insert(0)
// 移除
set.remove(2)
set.removeFirst()
// 移除指定位置的元素,需要用 ! 拆包,拿到的是 Optional 类型,如果移除不存在的元素,EXC_BAD_INSTRUCTION
set.remove(at: set.firstIndex(of: 1)!)
set.removeAll()
var setStr1: Set<String> = ["1", "2", "3", "4"]
var setStr2: Set<String> = ["1", "2", "5", "6"]
// Set 取交集
setStr1.intersection(setStr2) // {"2", "1"}
// Set 取交集的补集
setStr1.symmetricDifference(setStr2) // {"4", "5", "3", "6"}
// Set 取并集
setStr1.union(setStr2) // {"2", "3", "1", "4", "6", "5"}
// Set 取相对补集(差集),A.subtract(B),即取元素属于 A,但不属于 B 的元素集合
setStr1.subtract(setStr2) // {"3", "4"}
var eqSet1: Set<Int> = [1, 2, 3]
var eqSet2: Set<Int> = [3, 1, 2]
// 判断 Set 集合相等
if eqSet1 == eqSet2 {
print("集合中所有元素相等时,两个集合才相等,与元素的顺序无关")
}
let set3: Set = [0, 1]
let set4: Set = [0, 1, 2]
// 判断子集
set3.isSubset(of: set4) // set3 是 set4 的子集,true
set3.isStrictSubset(of: set4) // set3 是 set4 的真子集,true
// 判断超集
set4.isSuperset(of: set3) // set4 是 set3 的超集,true
set4.isStrictSuperset(of: set3) // set4 是 set3 的真超集,true
// 遍历元素
for ele in set4 {
print(ele)
}
// 遍历集合的枚举
for ele in set4.enumerated() {
print(ele)
}
// 下标遍历
for index in set4.indices {
print(set4[index])
}
// 从小到大排序后再遍历
for ele in set4.sorted(by: <) {
print(ele)
}
网友评论