swift-字符串

在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),


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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