Swift(三) 字符串、数组和字典

更新:2018.05.24

整理了一下demo:SwiftDemo


  • Swift将OC中的大部分类都变成了结构体,比如Sring,比如Array,比如Dictionary
  • 按住command点击随便一个Int或者Double或者String都会发现前面有一个struct,结构体。使用起来变得更加简单。
  • Swift中不再存在OC中的NSMutableArrayNSMutableString,NSMutableDictionary
    在Swift中,只通过参数名前面是let还是varlet就是不可变,var就是可变。

String

  • Swfit中,String是一个有序的字符集合,字符串可以通过String类型表示,也可以表示为Character类型的集合。
let characters : [Character] = ["h","e","l","l","o"]
let hello01 = String(characters)
print(hello01)
  • Swift中,拼接和操作字符串的方式与C中相似,轻量且易读,终于可以简单的使用'+'连接
let name = "hello "+"world"
  • 每个字符串都是由独立编码的Unicode字符组成,并且提供了拥有访问这些字符在不同的Unicode表示的支持。

  • Swfit中,String类型与Foundation NSString类进行了无缝桥接。如果需要利用CocoaCocoa Touch中的Foundation框架实现功能,整个NSString API都可以调用创建的任意String类型的值。也可以在任意要求传入NSString的实力作为参考的API中使用String类型作为替换。

  • 定义
let hello = "hello world"
let hello:String
// 也可以这样拼接 注意前面是var        
var hello02 = "hello,"
hello02.append("world")
// 打印字符个数
print(hello02.characters.count)
  • 截取
// 截取一个字符
print(hello01[hello01.startIndex])
// 截取一个字符
print(hello01[hello01.index(before: hello01.index(hello01.endIndex, offsetBy:-1))])
// 截取一段字符
print(hello02[hello02.index(hello02.startIndex, offsetBy: 3)...hello02.index(hello02.endIndex, offsetBy: -1)]) 
  • 插入
hello02.insert("!", at: hello02.endIndex)
hello02.insert(contentsOf: "hai".characters, at: hello02.startIndex)
  • 删除
hello02.remove(at: hello02.startIndex)
hello02.removeAll()
  • 判断
// 字符串相等
if hello01 == hello02 {
   print("两字符串相等")
}
// 判断前缀
if hello01.hasPrefix("hel") {
    print("有hel前缀")
}
// 判断后缀
if hello01.hasSuffix("lo") {
    print("有ol后缀")
}
// 判断是否为空
if hello02.isEmpty {
    print("字符串为空")
}

Array

  • Swfit中,数组是一种数据结构,用来存放多个类型相同的数据,数据在数组中是有序的。
  • Swfit中,数组存放任意类型数据需要定义为[Any]
  • Swift中,数组依然用[]表示。
  • 定义
let arr01 = ["asd","fgh","jkl","zxc"]
let arr02:[String] = ["123","456","789","0"]
let arr03:[Any] = ["let",1,2,UIView()]
let arr04 = [String]()
let arr05:NSArray = ["123","456","789"]
let arr06:NSMutableArray = ["1","2","3","4"]
arr06.contains(3)    //数组中是否存在'3' 结果为:true
  • 添加、插入
var arr07 = ["hello","world","!"]
// 追加
arr07.append("test")
// 插入
arr07.insert("test two", at: 1)
#打印结果
["hello", "test two", "world", "!", "test"]
  • 删除
var arr08 = ["1","2","3"]
// 删除某一项
arr08.remove(at: 0)
// 全部删除
arr08.removeAll()
  • 修改
var arr09 = ["4","5","6"]
arr09[0] = "7"
arr09[0...1] = ["8","9"]
print(arr09)
#打印结果
["8", "9", "6"]
  • 遍历
let arr10 = ["1","2","3","4"]
for str in arr10 {
    print(str)
}
for (index,value) in arr10.enumerated() {
    print("Index: \(index),Valuie: \(value)")
 }
#打印结果
1
2
3
4
Index: 0,Valuie: 1
Index: 1,Valuie: 2
Index: 2,Valuie: 3
Index: 3,Valuie: 4

Dictionary

  • 字典是集合类型存放多个键值对,其中键是唯一的,不能重复。
  • 字典中存放的键值对是无序的,写入的顺序和读取的顺序可能不同。
  • 字典中存放的数据是任意类型。
  • Swift中,字典和数组都用'[]'表示。
  • 定义
let dict01:[String:Int] = ["A":90,"B":80,"C":70]
let dict02 = [String:String]()
let dict03 = ["A":"10","B":"20","C":"30"]
  • 添加、修改

swift中字典的增加和修改:如果有key就是修改,如果没有key,就是增加

var dict04 = ["name":"Lucy","sex":"woman"]
dict04["age"] = "18"
dict04["name"] = "Lili"
  • 删除
var dict05 = ["name":"Lucy","sex":"woman","age":"18"]
dict05.removeValue(forKey: "name")
dict05.removeAll()
  • 遍历
var dict06 = ["name":"Lucy","sex":"woman","age":"18"]
// 检查是否为空
if dict06.isEmpty {
    print("字典为空")
}
for (key,value) in dict06 {
    print("Key:\(key),Value:\(value)")
}
for key in dict06.keys {
    print("Key:\(key)")
}
for value in dict06.values {
    print("Value:\(value)")
}
#打印结果
Key:name,Value:Lucy
Key:sex,Value:woman
Key:age,Value:18
Key:name
Key:sex
Key:age
Value:Lucy
Value:woman
Value:18

Set

  • Swift中,集合Set可以存放多个相同类型数据。
  • Set存放的数据时无序的。
  • Set中存放的数据不能重复,如果重复,系统会自动删除。
 let set01:Set = [1,2,3,4,5,6,7,8,8]
print(set01)
#打印结果
[2, 4, 5, 6, 7, 3, 1, 8]
  • 插入、删除、遍历
var set02:Set = [1,2,3,4,5,6]
set02.insert(7)
print(set02)
set02.remove(1)
print(set02)
set02.removeFirst()
print(set02)
for i in set02.sorted() {
    print(i)
 }
#打印结果
[2, 4, 5, 6, 7, 3, 1]
[2, 4, 5, 6, 7, 3]
[4, 5, 6, 7, 3]
3
4
5
6
7

End

头好晕~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,042评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,996评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,674评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,340评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,404评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,749评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,902评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,662评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,110评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,577评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,258评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,848评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,726评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,952评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,271评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,452评论 2 348

推荐阅读更多精彩内容