美文网首页Swift程序员
Swift-字符串,数组,字典

Swift-字符串,数组,字典

作者: 逾期的誓言 | 来源:发表于2017-09-05 14:52 被阅读39次

    摘要:简单介绍下在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)
    

    最后来一波无耻的广告:淘劵吧

    相关文章

      网友评论

        本文标题:Swift-字符串,数组,字典

        本文链接:https://www.haomeiwen.com/subject/tobujxtx.html