在oc語言中,NSString來申明一個字符串。
在swift語言中,用String來申明一個字符串,學(xué)習(xí)過java的也應(yīng)該知道。
字符(character)
在這里,需要說明一點的就是,字符串中有字符(Character)這個概念,一串字符串是由多個字符組成。
let str = "Hello" ? ? ?這個字符串就是由"H","e","l","l","o"5個字符構(gòu)成的字符串。
獲取字符串的長度的方法
str.characters.count
不能通過索引來獲取某一個字符
str[0] 或者str.characters[0] 這樣的寫法是錯誤的。
索引(Index)
那么,要如何去獲取某一個字符。在這里,有個概念,要想獲取一個字符,那么要先獲取索引(Index),然后再通過索引獲取字符
let startIndex = str.startIndex ?//獲取第一個索引。類型為Index
let endIndex = str.endIndex //獲取最后一個索引
let Index = startIndex.advancedBy(5) //獲取從0開始,第5個索引位置
let Index2 = Index.predecessor() ?//獲取當(dāng)前索引前一個索引
let Index3 = Index.successor() //獲取當(dāng)前索引后一個索引
值得一提的就是,獲取的索引注意是否越界。
字符串增刪改查操作
增
str.appendContentsOf("!!!") //在字符串最后添加字符串
str.insert("?", atIndex: str.startIndex) //給定字符串一個索引位置,就可以添加一個字符到這個索引位置上。注意:只能添加一個字符
刪
str.removeAtIndex(str
str.removeAtIndex(str.endIndex.predecessor()) //刪除給定的索引的字符(只能刪除一個字符)
str.removeRange(str.endIndex.advancedBy(-2)..<str.endIndex) ?//通過區(qū)間方法,可以同時刪除區(qū)間所在的所有字符
str.removeAll() ?//刪除所有字符
改
let range = startIndex..<spaceIndex.predecessor()
str.replaceRange(range, with: "Hi") ?//通過這樣的方法,使得range這段字符被“Hi”給替換掉
查
let a = str[str.startIndex] //獲取第一個字符
let b = str[str.endIndex] //獲取最后一個字符
let c = str[str.startIndex.advancedBy(5)] //獲取第5個字符
let d = str[str.startIndex.advancedBy(5).predecessor()] //獲取第4個字符
let f? = str[str.startIndex.advancedBy(5).successor()] //獲取第6個字符
Character(字符)和Unicode
str.characters ?//字符串所有字符
如果let mark = "!" 申明,系統(tǒng)默認(rèn)將mark作為字符串類型處理,其實這個mark嚴(yán)格來說是個字符。
字符串之間的可以通過“+”來進(jìn)行字符串的合并
//在swift語言中,下列這些字符都是當(dāng)作一個Character字符
let englishLetter:Character = "a"
let chineseLetter:Character = "雷"
let smile:Character = "??"
let coolGuy:Character = "\u{1F60E}"http://Unicode碼
在swift中,可以更精確的來判斷字符串長度,不會受中文,Unicode影響,相比于OC的NSString來說,顯得更加實用。
字符串的一些操作
//uppercaseString,字符串全部轉(zhuǎn)成大寫
str.uppercaseString
//lowercaseString,字符串全部轉(zhuǎn)成小寫
str.lowercaseString
//capitalizedString,每一句字符串首字母轉(zhuǎn)成大寫
str.capitalizedString
//containsString,判斷傳入的字符串是否被str包含
str.containsString("Hello")
//hasPrefix,判斷傳入的字符串是否含有str的前綴
str.hasPrefix("Hello")
//hasSuffix,判斷傳入的字符串是否含有str的后綴
str.hasSuffix("ft")
字符串的缺點:
let s = "one third is \(1.0/3.0)" 這段代碼就是算出1/3,結(jié)果的浮點數(shù)沒法去指定保留小數(shù)點后幾位。
所以,引進(jìn)了as這個關(guān)鍵字,用來強(qiáng)制類型轉(zhuǎn)化。
as
我們可以利用NSString的方法來處理小數(shù)點問題,然后再強(qiáng)轉(zhuǎn)成String類型
let s2 = NSString(format: "one third is %.2f", 1.0/3.0) as String
NSString
總結(jié):String字符串需要注意的就是獲取字符(Character)需要通過索引(Index),在String不好處理的一些邏輯,可以通過NSString來處理再as強(qiáng)轉(zhuǎn),