Swift學習—字符串&數組&字典

字符串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")}
相關文章
相關標籤/搜索