zoukankan      html  css  js  c++  java
  • Swift学习—字符串&数组&字典

    字符串

    • OC和Swift中字符串的区别
      • 在OC中字符串类型时NSString,在Swift中字符串类型是String
      • OC中字符串@"",Swift中字符串""
      • Swift中String是第一个结构体,性能更高
      • String支持直接遍历
      • Swift提供了String和NSString之间的无缝转换
     
    字符串的使用
     
    • 用反斜线 和小括号 () 做字符串插值(把常量变量插入到字符串中)
      • let hand = 2
        var age1 = 20
        let string1 = "我今年(age1)岁了,有(hand)只手"
      • //也可以使用字符串拼接,但是必须转成字符串
        var string2 = "我今年"+String(age1) + "岁了,有(hand)只手"
     
    • 遍历字符串
      • var string = "hi siri"
        for s in string.characters { // string.characters 表示string中所有的字符
            print(s)   // 依次打印7个字符,空格也是
        }  
     
    • 字符串和其他数据类型的拼接
      • let name = "siri"
        let age = 10
        let siriInfo = "my name is (name), age is (age)"
                 my name is siri, age is 10
     
    • 字符串的格式化  时间:03:04
      • let min = 3
        let second = 4
        let time = String(format: "%02d:%02d", arguments: [min, second])
     
    • 字符串的截取
      • Swift中提供了特殊的截取方式,但是非常麻烦,并且Index很难创建
      • 简单的方式是将String转成NSString来使用. String -> NSString   在标识符后加:as NSString即可
        • let baidu = "www.baidu.com"
          var subStr = (baidu as NSString).substringFromIndex(4)  // “baidu.com"
          subStr = (baidu as NSString).substringToIndex(3)        // “www"
          subStr = (baidu as NSString).substringWithRange(NSRange(location: 4, length: 5)) // “baidu"
     
    • 注意:在Swift中String有一个叫toInt的方法,能够将一个字符串转换为Int类型。需要注意的是不是所有的字符串都可以转换为整数。
      • let numStr = “123"  
        //let number = numStr.toInt()  // 好像没有用了
     
    数组
    • 数组:(Array)是一串有序的由相同类型元素构成的集合,let修饰时不可变数组,var修饰时可变数组
      • // 定义一个可变数组,必须初始化才能使用
        var array1 : [String] = [String]()
        // 定义一个不可变数组
        let array2 : [NSObject] = ["wwl", 18]
     
    • 声明
      • // 声明方式一:var myArray1 : Array<String>
        // 声明方式二:var myArrray2 : [String]
     
    • 初始化
      • // 定义时直接初始化
        var array3 = ["aaa", "sss", "ddd"]  // 类型推导出 string 类型
        // 先定义,后初始化
        var array4 : Array<String>
        array4 = ["fff", "ggg", "hhh"]
     
    注意:数组必须要初始化才能使用,数组类型在声明的时候指定
     
    • 数组操作:
      • // 添加数据
        array.append("dd")
        // 删除元素
        array.removeFirst()
        // 修改元素
        array[0] = "ee"
        // 取值
        array[1]
        //插入元素
        array.insert("ttt", atIndex: 0)
      • // 取数组也可以用区间
        array[1...2]
                    
                        
     
     
    • 数组的遍历
      • // 普通遍历数组   
        for i in 0..<array.count {
            print(array[i])   // 有下标
        }

        // for in 方式
        for item in array {
            print(item)  // 不需要下标
        }

        // 设置遍历的区间
        for item in array[0..<2] { // 0..<2 开区间 0,1    0...2 闭区间 0,1,2
            print(item)
        }
     
    • 数组的合并
      • 只有相同类型的数组才可以合并
        • var stringArr1 = ["aa", "bb","cc"]
          var stringArr2 = ["dd", "ee"]
          var stringArr3 = array + array1;

          // 不建议一个数组中存放多种类型的数据
          var objectArr1 = [22, 33, "aa"]
          var objectArr2 = ["bb", 44]
          objectArr1 + objectArr2
     
    • 通过一个返回布尔类型的isEmpty属性检查数组的长度是否为0
      • var stringArr = ["aa", "bb", "cc"]

        if !stringArr.isEmpty {
            print("stringArr have (stringArr.count) items")
        } else {
            print("stringArr is empty")
        }
        stringArr have 3 items
     
    • 用(+=)操作符来把一个数组添加到另一个数组的末尾
    • (+=)操作符来把一个元素添加到数组末尾  好像删除了
      • var stringArr = ["aa", "bb", "cc"]
        var stringArr1 = ["dd", "ee", "ff"]
        stringArr1 += stringArr
        print(stringArr1)  // ["dd", "ee", "ff", "aa", "bb", "cc"]
     
    • Swift数组类型也提供初始化方法来创建确定长度和提供默认数值的数组。你可以通过这个初始化方法增加一个新的数组,元素的数量成为count,合适的默认值为repeatedValue
      • var threeStringArr = [String](count: 3, repeatedValue: "hi")
        // 得益于类型推断,也可以不指定类型
        var threeDoubleArr = Array(count: 3, repeatedValue: 2.0)
     
     
     
    字典
    • Swift中的字典类型是Dictionary,泛型集合。var修饰是可变字典,let修饰时可变字典
     
    • 声明字典类型:
      • var dict1: Dictionary<Int, String> 
        var dict2: [Int: String] 
     
    • 初始化:
      • 必须进行初始化才能使用
      • var dict1: Dictionary<Int, String> = Dictionary()
     
      • // 定义一个可变字典
        var dict3 : [String : NSObject] = [String : NSObject]()

        // 定义字典的同时进行初始化
        let dict4 = ["name" : "xiaosan", "age" : 18] // 类型推导出 [String : NSObject] 类型

        // swift中任意对象,通常不使用NSObject,使用AnyObject
        var dict5 : Dictionary<String, AnyObject>
        dict5 = ["name" : "dd", "age" : 18]
     
    • 字典的基本操作
      • // 字典的操作
        var dict : [String : AnyObject] = [String : AnyObject]()

        dict = ["age" : 18, "height" : 1.74, "name" : "xiaocan"]

        // 添加数据
        dict["weight"] = 60.0

        // 删除数据
        dict.removeValueForKey("age")

        // 修改字典
        dict["name"] = "xiaoer"
        dict["age"] = 18  // 如果没有这个键,则为添加数据

        // 查询
        dict["name"]
     
    • 字典的遍历
      • // 遍历字典中所有的值
        for value in dict.values {
            print(value)
        }
        // 遍历字典中所有的键
        for key in dict.keys {
            print(key)
        }

        // 遍历所有的键值对
        for (key, value) in dict {
            print(key)
            print(value)
        }
     
    • 字典的合并
      • var myDict1 = ["name" : "xiaosan", "age" : 20]
        var myDict2 = ["height" : 1.77, "address" : "taikang"]

        // 字典不可以相加合并     另外类型不同也不能合并
        for (key, value) in myDict1 {
            myDict2[key] = value
        }
     
    • removeValueForKey && updateValue(forKey:)
     
      • 字典的updateValue(forKey:) 方法去设置或者更新一个特定键的值,如果键不存在则会设置它的值,如果键存在则会更新它的值, 和下标不一样是, updateValue(forKey:) 方法如果更新时,会返回原来旧的值rThis enables you to 可以使用这个来判断是否发生了更新。
        • var dict = ["name" : "siri", "age" : 18, "address" : "nanjing"]

          iflet oldValue = dict.updateValue("Siri", forKey: "name") {
              print(oldValue)  // siri
          }

          //使用下标语法把他的值分配为nil,来移除这个键值对。
          dict["age"] = nil

          print(dict)  // ["address": nanjing, "name": Siri]
      •  使用removeValueForKey方法,如果存在键所对应的值,则移除一个键值对,并返回被移除的值,否则返回nil。
        • if let removedValue = dict.removeValueForKey("address") {
              print("The remove dict's adddress is (removedValue)") // The remove dict's adddress is nanjing
          } else {
              print("The dict does not contain a value for address")
          }
     
     
  • 相关阅读:
    日志管理工具logrotate
    springboot2整合logback.xml动态修改日志打印级别
    mybatis框架之装饰模式
    mybatis源码分析之06二级缓存
    后勤信息反馈---场景描述
    《人月神话》读后感---计算机产品的文档
    android studio 使用第三方模拟器连接方法
    第八周总结
    Android Studio 和 SDK 下载、安装和环境变量配置
    求最大子数组并单步显示
  • 原文地址:https://www.cnblogs.com/10-19-92/p/5627619.html
Copyright © 2011-2022 走看看