Swift(三) 字符串衡查、數(shù)組和字典

更新:2018.05.24

整理了一下demo:SwiftDemo


  • Swift將OC中的大部分類都變成了結構體瘩欺,比如Sring,比如Array拌牲,比如Dictionary俱饿。
  • 按住command點擊隨便一個Int或者Double或者String都會發(fā)現(xiàn)前面有一個struct,結構體塌忽。使用起來變得更加簡單拍埠。
  • Swift中不再存在OC中的NSMutableArrayNSMutableString,NSMutableDictionary
    在Swift中土居,只通過參數(shù)名前面是let還是var枣购,let就是不可變嬉探,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框架實現(xiàn)功能肠缨,整個NSString API都可以調用創(chuàng)建的任意String類型的值碰煌。也可以在任意要求傳入NSString的實力作為參考的API中使用String類型作為替換箱玷。

  • 定義
let hello = "hello world"
let hello:String
// 也可以這樣拼接 注意前面是var        
var hello02 = "hello,"
hello02.append("world")
// 打印字符個數(shù)
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中窿克,數(shù)組是一種數(shù)據(jù)結構汗侵,用來存放多個類型相同的數(shù)據(jù)降铸,數(shù)據(jù)在數(shù)組中是有序的河胎。
  • Swfit中勃刨,數(shù)組存放任意類型數(shù)據(jù)需要定義為[Any]
  • Swift中栋烤,數(shù)組依然用[]表示谒养。
  • 定義
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)    //數(shù)組中是否存在'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

  • 字典是集合類型存放多個鍵值對明郭,其中鍵是唯一的买窟,不能重復。
  • 字典中存放的鍵值對是無序的薯定,寫入的順序和讀取的順序可能不同始绍。
  • 字典中存放的數(shù)據(jù)是任意類型。
  • Swift中话侄,字典和數(shù)組都用'[]'表示亏推。
  • 定義
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可以存放多個相同類型數(shù)據(jù)变丧。
  • Set存放的數(shù)據(jù)時無序的芽狗。
  • Set中存放的數(shù)據(jù)不能重復,如果重復痒蓬,系統(tǒng)會自動刪除童擎。
 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

頭好暈~~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末柔昼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炎辨,更是在濱河造成了極大的恐慌捕透,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碴萧,死亡現(xiàn)場離奇詭異乙嘀,居然都是意外死亡,警方通過查閱死者的電腦和手機破喻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門虎谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曹质,你說我怎么就攤上這事婴噩。” “怎么了羽德?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵几莽,是天一觀的道長。 經常有香客問我宅静,道長章蚣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任姨夹,我火速辦了婚禮纤垂,結果婚禮上,老公的妹妹穿的比我還像新娘磷账。我一直安慰自己峭沦,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布够颠。 她就那樣靜靜地躺著熙侍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪履磨。 梳的紋絲不亂的頭發(fā)上蛉抓,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音剃诅,去河邊找鬼巷送。 笑死,一個胖子當著我的面吹牛矛辕,可吹牛的內容都是我干的笑跛。 我是一名探鬼主播付魔,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼飞蹂,長吁一口氣:“原來是場噩夢啊……” “哼几苍!你這毒婦竟也來了?” 一聲冷哼從身側響起陈哑,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妻坝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惊窖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刽宪,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年界酒,在試婚紗的時候發(fā)現(xiàn)自己被綠了圣拄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡毁欣,死狀恐怖庇谆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情署辉,我是刑警寧澤族铆,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站哭尝,受9級特大地震影響哥攘,放射性物質發(fā)生泄漏。R本人自食惡果不足惜材鹦,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一逝淹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桶唐,春花似錦栅葡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坯约,卻和暖如春熊咽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闹丐。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工横殴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人卿拴。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓衫仑,卻偏偏與公主長得像梨与,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子文狱,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容