摘要:简单介绍下在Swift中对 字符串,数组,字典的常用操作。
字符串
- 字符串的长度
let string = "hello world"
// 1,字符串的遍历 ,字符串是一个结构体
for c in string.characters {
print(c)
}
// 2, 返回指定编码对应的的字节数量
// utf8 编码(0-4)个,每个汉字的是3个字节
print(string.lengthOfBytes(using: .utf8))
// 3, 字符串长度--- 获取字符的个数
print("---\(string.characters.count)----")
// 4,使用NSString中转 ( string as "类型" swift中的类型转换)
let ocString = string as NSString
print(ocString.length)
- 字符串的拼接
let name = "谁家娇妻守空房"
let age = "隔壁老王来帮忙"
let title: String? = "大王叫我来巡山了"
let nameString = "\(name) \(age) \(title ?? "")"
print(nameString)
print(name + age + (title ?? ""))
- 字符串的截取
let titleString = "曾经的王者,如今的小弟"
// 1,转化成NSString ,强烈建议使用
let ocString = titleString as NSString
let string1 = ocString.substring(with: NSMakeRange(2, 4))
print(string1)
// 2,swift 3.0以后的新方法
// from:"字符串的起始长度"
let string2 = titleString.substring(from: "我们".endIndex)
let string3 = titleString.substring(from: "adc".endIndex)
print("-------------")
print(string2)
print(string3)
// 字符串的范围
guard let range = titleString.range(of: "王者") else {
print("不包括字符串")
return
}
print("------------")
print(range) // 获取字符串对应的 range
print(titleString.substring(with: range))
- 特定格式化的字符串
let h = 7
let m = 30
let s = 0
print("\(h):\(m):\(s)")
let dataString = String(format: "%02d:%02d:%02d",h,m,s)
print(dataString)
数组
- 数组的定义
// OC使用[] 定义数组,没有@符
// 自动推导数组元素类型 [String] - >表示 数组中存放的都是String类型
let firstArray = ["hello","world"]
print(firstArray)
// 自动推导为[Int]->表示存放的都是 Int类型
// 与OC不同 基本类型都是结构体,不需要包装
let array = [1,2,3,4,5]
print(array)
// 自动推导为[CGPoint] OC中的结构体
let p = CGPoint(x: 10, y: 300)
let array2 = [p]
print(array2)
// 混合数组,自动推导为 [Any]- > 任意类型
// 实际开发中并不常用
let array3 = ["混合数组",p,1] as [Any]
print(array3)
// 空间容量不足的时候 会 *2
let array4 = [Int]()
print("\(array4.capacity)")
- 数组的遍历
// 定义数组 [String]
let array = ["张三","李四","王二","麻子"]
//1,按照下标遍历
for i in 0..<array.count {
print(array[i])
}
//2, for in 遍历
for string in array {
print(string)
}
//3,遍历下标与内容 这里的 type 类型就是 **元组**
for type in array.enumerated() {
print("\(type.offset) \(type.element)")
}
// 4,遍历下标与内容
for (n, s) in array.enumerated() {
print("\(n)--\(s)")
}
// 5,反序遍历
print("--------反序遍历--------")
for s in array.reversed() {
print(s)
}
// 6,反序遍历下标内容(先枚举,后反序)
for s in array.enumerated().reversed() {
print(s)
}
// 错误写法(下标和内容不一样)
for s in array.reversed().enumerated() {
print(s)
}
- 数组的增,删,改
// OC 中数组分可变与不可变
var array = ["张三","李四","王二","麻子"]
// 追加元素
array.append("隔壁老王")
print(array)
// 修改元素
array[0] = "隔壁老宋"
print(array)
// 删除元素
array.remove(at: 2)
print(array)
// 特殊用法 :删除所有元素,并保留空间
array.removeAll(keepingCapacity: true)
print("\(array) \(array.capacity)")
- 数组的合并
// 要合并的数组的类型 要保持一致
var array = ["张三","李四","王二","麻子"] as [Any]
let array1 = ["老王","老宋","1",190] as [Any]
array += array1
print(array)
字典
- 字典的定义
// swift 中使用 【】定义
var dict = ["name" : "安抚啊发生f","age" : 18] as [String : Any]
print(dict)
/// 定义字典数组
let array = [["name": "afdasf","age": 19],["name":"dfa","age":10]]
print(array)
- 可变字典的增,删,改
var dic: [String: Any] = ["name": "王二","age":13]
// 添加,修改,都是通过key值取值,key值存在就是修改,不存在就是添加
// 添加键值对
dic["sex"] = "女"
//修改键值对
dic["name"] = "麻子"
print(dic)
// 删除
dic.removeValue(forKey: "sex")
print(dic)
- 字典的遍历
let dic: [String: Any] = ["name": "张三","age": 10,"sex": "妖"]
// 元组遍历
for object in dic {
print("\(object.key)----\(object.value)")
}
for (key, value) in dic {
print("\(key)-\(value)")
}
- 字典的合并
var dic: [String: Any] = ["name": "张三","age": 10]
let dic1: [String : Any] = ["sex": "妖","heigth": 17.0]
for object in dic1 {
// 取到 dic1 的key 值
let key = object.key
// 添加到 dic 中
dic[key] = object.value
}
print(dic)