欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift学习笔记第三篇(字符串,数组,集合,字典)

程序员文章站 2024-03-23 12:32:10
...

字符串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.基本操作
Swift学习笔记第三篇(字符串,数组,集合,字典)

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"]
 */