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