Swift入門----06字符串&字典&數(shù)組

字符串

  • 在 OC 中定義字符串用 @“”盒揉,Swift 中用 “”

  • 注意:OC 中的字符串是 NSString,Swift 中的字符串是 String

    • OC 中的字符串是一個對象楞捂,繼承于 NSObject
    • Swift 中的字符串是一個結(jié)構(gòu)體,Swift 中的字符串的性能比 OC 的高
    var str = "Hello, playground"
    

var str1: String = "Hello"


###字符串拼接
```swift
var str1 = "hello"
var str2 = "word"
let num = 2016
str1 += str2
print(str1)
print("\(str1) \(str2) \(num)")
//print結(jié)果分別為:helloword\n 與 "helloword word 2016\n"
  • 注意:直接在""中使用 \(變量名)方式可以快速拼接字符串响逢,并且不需要考慮 stringWithFormat

格式化字符串

方式一:
let age = 20
let name = "zhangsan"
//目標:name = zhangsan , age = 20
//方法見上字符串拼接
var str = "name = \(name) , age = \(age)"
方式二:
//目標:09:09:09
var str = String(format: "%02d: %02d: %02d", arguments: [9,9,9])
  • 這種方式對應(yīng)于 stringWithFormat
  • 在實際開發(fā)中蜻势,如果需要指定字 符串格式慎菲,可以使用 String(format:...) 的方式
  • 注意:后面的參數(shù)需要放在一個數(shù)組
    • 所有的值都必須放在數(shù)組中块茁,哪怕只有一個值也要放在數(shù)組中

遍歷字符串

  • Swift 中的字符串支持直接遍歷
var str = "hello word"
for l in str.characters
{
   if l == "l"
   {
       print(123)   //打印2次
   }
   print(l) //打印10次
}

字符串截取

  • 注意:在 Swift 中剥险,如果需要截取字符串,建議使用OC的字符串來截取狰闪,因為 Swift 中 String 的字符串的截取方法使用起來非常復(fù)雜
  • Swift 中的字符串可以和OC中的字符串非常方便的進行轉(zhuǎn)換
//OC 寫法 
var str : NSString = "hello word"
var str1 = "hello word" as NSString
var subStr = str.substringWithRange(NSMakeRange(0, 5))
//subStr 為 hello

//Swift的寫法
let str: String = "hello word"
var subStr = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex))
print(subStr)

出字符串截取之外疯搅,在 Swift 中字符串推薦使用 String 類型

數(shù)組

  • OC 中的數(shù)組:NSArray * arr = @[@"",@""];
  • Swift 中的數(shù)組和 OC 數(shù)組的區(qū)別就是去掉前面的@符號
let arr = ["tianxia","wushuang"]
print(arr)  //輸出結(jié)果:["tianxia","wushuang"]
//遍歷數(shù)組每一個元素
for a in arr
{
  print("-----") //輸出結(jié)果:兩行-----
}
//像 OC 一樣打印
print(arr as NSArray) 
/* 打印結(jié)果
(
    tianxia,
    wushuang
)
*/

數(shù)組中保存的對象類型

  • 初始化數(shù)組時,如果數(shù)組中的所有內(nèi)容類型一致埋泵,那么數(shù)組中保存的就是該類型的內(nèi)容
  • 初始化數(shù)組時幔欧,如果數(shù)組中的所有內(nèi)容類型不一致罪治,那么數(shù)組中保存的是 NSObject 類型
// 數(shù)組中保存的都是字符串
let arr = ["tianxia", "wushuang"]

// 數(shù)組中保存的是 NSObject
let arr1 = ["tianxia", 1]

數(shù)組常見操作

//定義只能保存字符串類型的數(shù)組
var array: [String]

// 初始化數(shù)組
array = ["tianxia"]

//添加元素
array.append("wushuang")
print(array)
//輸出結(jié)果:["tianxia", "wushuang"]

//刪除元素
array.removeAtIndex(0)
print(array)
//輸出結(jié)果:["wushuang"]


//刪除所有元素
//array.removeAll()
array.removeAll(keepCapacity: true)
print(array.capacity)

//注意數(shù)組容量的變化
for i in 0..<10 {
    array.append("\(i)")
    print("\(array) --- \(array.capacity)")
}
/* 輸出結(jié)果
["0"] --- 1
["0", "1"] --- 2
["0", "1", "2"] --- 4
["0", "1", "2", "3"] --- 4
["0", "1", "2", "3", "4"] --- 8
["0", "1", "2", "3", "4", "5"] --- 8
["0", "1", "2", "3", "4", "5", "6"] --- 8
["0", "1", "2", "3", "4", "5", "6", "7"] --- 8
["0", "1", "2", "3", "4", "5", "6", "7", "8"] --- 16
["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] --- 16
*/

//實例化新的數(shù)組
var array1 = [String]()
array1.append("fengyun")
array1.append("baibian")

//拼接數(shù)組
array += array1
print(array)
//輸出結(jié)果:["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "fengyun", "baibian"]

注意

  • 如果定義數(shù)組時指定了保存對象的類型,那么就不能向該數(shù)組中添加其他類型的內(nèi)容
  • 可以使用 [String]()
  • let 定義的數(shù)組是不可變的,var定義的數(shù)組是可變的

數(shù)組容量變化部分礁蔗,本人不是太理解容量的變化觉义,哪位朋友知道的,還請告知浴井,謝謝大家了

字典

  • OC 中創(chuàng)建字典 @{@"key" : @"value"};
  • Swift 中創(chuàng)建字典和創(chuàng)建數(shù)組一樣晒骇,用 [ ]
  • let dict: [String : NSObject]類型是以后開發(fā)中最常見的一種類型
//定義并實例化字典
var dict = [String: AnyObject]()
//var dict1 = [String : NSObject]()
//var dict2 = ["key":30 , "key1":"40"]
dict["name"] = "zhangsan"
dict["age"] = 30
print(dict)
//輸出結(jié)果:["age": 30, "name": zhangsan]

//獲取value
dict["name"]

//遍歷字典
//OC
for keys in dict.keys
{
    print(keys)
}

//利用元祖類型遍歷字典
for (k ,v) in dict
{
    print(k)
    print(v)
}

//新增key、value
dict["sex"] = "boy"

//更新key磺浙、value
dict["age"] = 20

//刪除
dict.removeValueForKey("age")

//合并字典
var dict1 = ["time":2016,"date":"4-22"]
for (key, value) in dict1
{
  dict[key] = value
}
print(dict)
//輸出結(jié)果:["name": zhangsan, "date": 4-22, "time": 2016, "sex": boy]
  • 小結(jié)
    • 元祖類型遍歷字典
      • 元組是多個值組和成的復(fù)合值洪囤。元祖中的值可以是任意類型,并且每一個元素的類型可以不同
      • for (k ,v) in dict,利用元祖遍歷字典撕氧,會自動將字典中的 key 賦值給元組中的第一個變量瘤缩,將 value 賦值給元祖中的第二個變量
      • 注意上面元組中第一個是 key,第二個是 value
    • 新增\更新 key\value
      • 如果對應(yīng)的 key 在字典中沒有伦泥,那么就會新增
      • 如果對應(yīng)的 key 在字典中有剥啤,那么就會更新
      • 兩個字典的合并就是利用新增與更新進行操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奄喂,隨后出現(xiàn)的幾起案子铐殃,更是在濱河造成了極大的恐慌,老刑警劉巖跨新,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件富腊,死亡現(xiàn)場離奇詭異,居然都是意外死亡域帐,警方通過查閱死者的電腦和手機赘被,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肖揣,“玉大人民假,你說我怎么就攤上這事×牛” “怎么了羊异?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長彤断。 經(jīng)常有香客問我野舶,道長,這世上最難降的妖魔是什么宰衙? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任平道,我火速辦了婚禮,結(jié)果婚禮上供炼,老公的妹妹穿的比我還像新娘一屋。我一直安慰自己窘疮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布冀墨。 她就那樣靜靜地躺著闸衫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轧苫。 梳的紋絲不亂的頭發(fā)上楚堤,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機與錄音含懊,去河邊找鬼。 笑死衅胀,一個胖子當(dāng)著我的面吹牛岔乔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滚躯,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼雏门,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掸掏?” 一聲冷哼從身側(cè)響起茁影,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丧凤,沒想到半個月后募闲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡愿待,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年浩螺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仍侥。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡要出,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出农渊,到底是詐尸還是另有隱情患蹂,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布砸紊,位于F島的核電站传于,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏批糟。R本人自食惡果不足惜格了,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徽鼎。 院中可真熱鬧盛末,春花似錦弹惦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至檐嚣,卻和暖如春助泽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嚎京。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工嗡贺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鞍帝。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓诫睬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帕涌。 傳聞我的和親對象是個殘疾皇子顺少,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容