美文网首页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