Swift學習筆記第三篇(字串,陣列,集合,字典)

Deft_MKJing宓珂璟發表於2017-06-13

字串String

1.宣告

// 空字串
let emptyString = ""
let anatherString = String()
if emptyString.isEmpty {
    print("空的,我擦")
}

2.轉義字元

/// 轉義字元\0(空字元)、\\(反斜線)、\t(水平製表符)、\n(換行符)、\r(回車符)、\"(雙引號)、\'(單引號)。

/// Unicode 標量,寫成\u{n}(u為小寫),其中n為任意的一到八位十六進位制數。
let windoe = "\"我要成為海賊王的男人\"- 路飛"
let dorllar = "\u{24}" "$"
let blackHeart = "\u{2665}" "♥"
let sparklingHeart = "\u{1F496}" "紅色愛心"

3.字串拼接

// 可變和不可變字串
var varString = "MKJ"
varString += "CJJ"
//let letString = "MKJ111"
//letString += "CJJ"
//在 Objective-C 和 Cocoa 中,您通過選擇兩個不同的類(NSString和NSMutableString)來指定該字串是否可以被修改,Swift 中的字串是否可以修改僅通過定義的是變數還是常量來決定,實現了多種型別可變性操作的統一。

// Swift 的String型別表示特定序列的Character(字元) 型別值的集合。 每一個字元值代表一個 Unicode 字元。 您可利用for-in迴圈來遍歷字串中的每一個字元 這裡和之前的不同需要呼叫characters進行遍歷

for charater in "he is a ��".characters {
    print(charater)
}


// 計算字串的數量
let countingString = "ndsd dsfdgg kjjkfdfdlf;"

print("contingString is number of \(countingString.characters.count) charaters")



// 字串拼接
let string1 = "111"
let string2 = "222"
var string3 = string1 + string2
let charater1 : Character = "?"
string3.append(charater1)

// 字串格式化 \()
let num1 = 3
print("\(num1) * 2.5  是 \(Double(num1) * 2.5)")

/*
 h
 e

 i
 s

 a

 ��
 contingString is number of 23 charaters
 3 * 2.57.5
 */

4.字串比較和大小寫

// 字串比較  相等 直接用==
let quato = "一樣的"
let quate = "一樣的"
if quate == quato {
    print("一樣了")
}

// 和OC一樣,判斷前字尾用hasPrefix 和 hasSuffix

// 字串大小寫
let normal = "Could help me please"
let upString = normal.uppercased()
let downString = normal.lowercased()


陣列Array

1.宣告

// 1.構造
// shoppingList變數被宣告為“字串值型別的陣列“,記作[String]。 因為這個陣列被規定只有String一種資料結構,所以只有String型別可以在其中被存取
var shoppingList:[String] = ["milk","apple"]

// swift可以自動推斷型別 因此可以不用再陣列申明之

2.獲取數量和判斷是否為空

// 2.獲取數量/判斷是否為空
print("shopping list has \(shoppingList.count) items")

if shoppingList.isEmpty {
    print("array is empty")
}

3.陣列訪問,新增刪除

// 3.資料的新增刪除和訪問
shoppingList.append("reveal")
shoppingList += ["photo shop","Xmind"]

var item = shoppingList[0]

// 可以這樣直接穿插擴充
shoppingList[2...3] = ["QQ","Wechat","MTJF"]

print(shoppingList)

shoppingList.removeLast()
shoppingList.removeFirst()

print(shoppingList)

4.遍歷和列舉遍歷

// 4.遍歷
for item in shoppingList {
    print(item)
}

// 需要所有資訊
/*
 第1個是apple
 (offset: 0, element: "apple")
 第2個是QQ
 (offset: 1, element: "QQ")
 第3個是Wechat
 (offset: 2, element: "Wechat")
 第4個是MTJF
 (offset: 3, element: "MTJF")
*/
for value in shoppingList.enumerated() {
    print("第\(value.offset + 1)個是\(value.element)")
    print(value)
}

5.repeat建立陣列

// 5.構建資料
var intArr = [Int]()
print("array of intArr has elements \(intArr.count) items")
// 重複建立
var repeatArray = [Double](repeatElement(3.0, count: 5))
print(repeatArray)


集合Set

1.無序排列

// Set集合 他是無序的
var setMusics:Set<String> = ["JJ","KK","LL","OO"]
for item in setMusics {
    print(item)
}
print("\n")
/*
 OO
 JJ
 KK
 LL
 */
// 有序輸出

for item in setMusics.sorted() {
    print(item)
}
/*
 JJ
 KK
 LL
 OO
 */

2.基本操作
這裡寫圖片描述

let odd: Set = [1,3,5,7,9]
let even: Set = [0,2,4,6,8]
let deltaD: Set = [1,2,7,8]
// union 兩個集合所有元素建立一個新的集合
print(odd.union(even).sorted())

// intersect 交集
print(odd.intersection(deltaD).sorted())

// exclusiveOr 反交集
print(odd.symmetricDifference(deltaD).sorted())


// subtract 呼叫序列中和另一序列中除去相交部分建立一個新的集合
var aaa:Set = [1,2,3,4,5]
let bbb:Set = [2,3,4]
print(aaa.subtracting(bbb).sorted())

/*
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 [1, 7]
 [2, 3, 5, 8, 9]
 [1, 5]
 */

字典Dictionary

1.基本上和OC的一樣的 宣告如下

// 字典,這個和OC基本上一樣的
// 建立
var nameDict = Dictionary<Int,String>()

2.基本操作 更新以及建立

// 給字典更新或者建立值有下面兩種,一種直接訪問key  還有一種是通過updateValue,找不到的時候會有反饋,進下一波操作,但是實際上有則更新,沒有則新增
nameDict[1] = "mkj"
nameDict[2] = "cjj"

print(nameDict)

// 下面的方法會返回更新之前的原值
if let value = nameDict.updateValue("HEHE", forKey: 2) {
    print(nameDict[2]!)
    print(value)
}
// 如果存在,就和上面一樣返回原值,if判斷成立,更新舊值,但是沒有的情況下返回就是nil,不能複製給let,因此if失敗,同樣新增新的key value,但是if走失敗的邏輯
if let value = nameDict.updateValue("MEILE", forKey: 0) {
    print(nameDict[0]!)
}
else
{
    print("不存在")
}
print(nameDict)

// removeValueForKey 同理

/*
 [2: "cjj", 1: "mkj"]
 HEHE
 cjj
 不存在
 [2: "HEHE", 0: "MEILE", 1: "mkj"]
 */

相關文章