Swift-字符串,数组,字典

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容