基础数据类型中,我们经常跟字符串、数组、字典、元组打交道,所以我们重点讲下它们
字符串
字符串的方法汇总:长度、拼接、查找、替换、截取、分割、获取指定位置的字符、去掉首尾空白字符、格式化、转大写、转小写等方法
var text = "Hello"
获取字符串长度
let length: Int = text.count
判断字符串是否为空
let isEmpty: Bool = text.isEmpty
字符串拼接
let helloWorld = text + ", World"
字符串拼接,值改变
text += ", World"
text.append(", World")
判断字符串是否相等
let isEqual: Bool = text == "Hello"
字符串强转整型
Int("10")
判断字符串是否包含前缀
text.hasPrefix("He")
判断字符串是否包含后缀
text.hasSuffix("s")
字符串遍历
for i in text {print(i)}
Swift 的 String API (当前最新版本 5.1)不是很友好,像获取字符串中某个位置的字符、判断字符串是否包含子字符串、字符串格式化等功能缺失。我们可以通过将 Swift 的 String 转换成 Objective-C 的 NSString,使用 OC 的字符串API
import Foundationextension String {// 字符串扩展方法:判断字符串是否包含子字符串func contains(_ substring: String) -> Bool {return (self as NSString).contains(substring)}}
import Foundationlet sql = """SELECT *FROM userWHERE name = %@;"""let name = "'huangjian'"print(String(format:sql, arguments:[name]))
备注:[swift.org] [apple.com] [Swift 的字符串比较难用1 😓] [Swift 的字符串比较难用2 😓] [分割] [截取]
数组
基本用法
// 创建数组var array: Array<String> = ["apple", "orange", "pear"]var array: [String] = ["apple", "orange", "pear"]var array = [String]()// 追加元素array.append("banana")// 追加(合并)数组array += ["watermelon", "peach"]// 插入元素array.insert("jujube", at: 1)// 修改元素array[0] = "grape"// 删除元素array.remove(at: array.count - 1)// 判断是否包含子元素print(array.contains("apple"))// 按字符合并数组print(array.joined(separator: ","))// 判断是否为空数组print(array.isEmpty)// 获取元素个数print(array.count)// 遍历数组for index in 0..<array.count {print(array[index])}for index in array.startIndex..<array.endIndex {print(array[index])}for element in array {print(element)}for (index, element) in array.enumerated() {print(index, element)}
删除元素
import Foundationvar array: Array<String> = ["apple", "orange", "pear"]print(array.first!, array.last!)// 删除最后几个元素,未指定则为 1,生成新的数组let newArray = array.dropLast(2)print(newArray)// 删除数组本身的最后一个元素,返回被删除的最后一个元素let popElement = array.popLast()print(popElement!)// 删除数组本身的最后一个元素,返回被删除的最后一个元素let removeElement = array.removeLast()print(removeElement as Any)// 删除指定区间的元素array.removeSubrange(Range.init(NSMakeRange(0, 2))!)print(array)
高级用法
转字符串 array``.joined
遍历 array``.forEach
排序 array``.sort
过滤 array``.filter
映射 array``.map 可改变数组存储的数据类型
其他映射 array``.flatMap 过滤 nil 值;将多维数组变成一维数组;强制解析可选值
其他映射 array``.compactMap 过滤 nil 和可选值
等等
备注:[数组]
字典
基本用法
var dict: Dictionary<String, String> = [:]var dict: [String: String] = [:]dict["name"] = "huangjian"dict["age"] = "18"dict["id"] = "10001"dict["address"] = "China"print(dict, dict.isEmpty, dict["name"] as Any, dict["age"] as Any)let oldValue1 = dict.updateValue("20", forKey: "age")let oldValue2 = dict.updateValue("male", forKey: "sex")let removeValue = dict.removeValue(forKey: "sex")print(dict)print(dict.keys)print(dict.values)print(dict.count)var result = dict.mapValues { (value) -> String inreturn "v-\(value)"}print(result)for (key, value) in dict {print(key, value)}
高级用法
dict.merge(["address": "HongKong"]) { (value1, value2) -> String inreturn value1}print(dict)var sortedDict = dict.sorted { (arg0, arg1) -> Bool inreturn arg0.key < arg1.key}var json = "{\n"for (index, item) in sortedDict.enumerated() {json += "\t\"\(item.key)\": \"\(item.value)\""if index != sortedDict.count - 1 {json += ",\n"}}json += "\n}"print(json)
元组
元组一般应用到函数的返回值
let tuple = (404, "Not Found")print(tuple.0)print(tuple.1)
let tuple = (name: "huangjian", age: 20)// 取值print(tuple.0, tuple.name)print(tuple.1, tuple.age)// 解构let (width, _) = (width: 100, height: 200)print(width)
注意:Void == (),但此 () 与元组无关,比如 let value: Void = ()

