詳解Swift中的Characters字符類型與String字符串類型
一、引言
Swift中提供了String類型與Characters類型來(lái)處理字符串和字符數(shù)據(jù),Swift中的String類型除了提供了許多方便開發(fā)者使用的方法外,還可以與Foundation框架的NSString類進(jìn)行轉(zhuǎn)換,使用起來(lái)十分方便。
二、String基礎(chǔ)
在Swift中,使用雙引號(hào)來(lái)定義字符串,開發(fā)者可以通過(guò)如下代碼來(lái)創(chuàng)建一個(gè)字符串常量:
let str = "Hello, playground"
可以通過(guò)下面兩種方式來(lái)創(chuàng)建空字符串:
let str1 = "" let str2 = String()
調(diào)用isEmpty方法可以判斷某個(gè)字符串是否為空字符串,這個(gè)方法將返回一個(gè)Bool值,可以直接用于if語(yǔ)句:
if str1.isEmpty { print("this String Object is Empty") }
不像Objective-C有NSString與NSMutableString的區(qū)別,在Swift中,如果需要?jiǎng)?chuàng)建可變的字符串,只需用變量來(lái)接收:
var str3 = "Hello" str3 += " "+"World"http://str3 = Hello World
String也可以使用插值的方法來(lái)構(gòu)造新的字符串,使用\()的方式來(lái)將插值的表達(dá)式寫在小括號(hào)內(nèi),示例如下:
let multiplier = 3 let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"http://3 times 2.5 is 7.5
獲取字符串的長(zhǎng)度使用如下代碼:
str3.characters.count
Swift中的String可以直接使用==運(yùn)算符來(lái)進(jìn)行比較,示例如下:
let comStr1 = "one two" let comStr2 = "one two" comStr1==comStr2//true
下面示例的代碼,用來(lái)檢驗(yàn)字符串是否包含前綴與后綴:
let tmp3 = "thank you" tmp3.hasPrefix("thank")//true tmp3.hasSuffix("you")//true
三、Character的使用
Character為Swift中的字符類型,在for-in循環(huán)中,可以將字符串中所有的字符進(jìn)行遍歷:
for chara in str3.characters { print(chara) }
也可以創(chuàng)建單獨(dú)的字符類型量值,示例如下:
let char1 = "" var cgar2 = "HS"
事實(shí)上,Sting字符串也可以通過(guò)Character字符數(shù)組進(jìn)行初始化:
let chars:[Character] = ["H","e","l","l","o"] let str4 = String(chars)
向字符串中追加字符使用如下方法:
var str5 = "" let ca:Character = "a" str5.append(ca)
四、字符串中的特殊字符
字符串中的特殊字符主要指轉(zhuǎn)義字符,Swift中的轉(zhuǎn)義字符列舉如下:
"\0"http://"" 空白符 "\\"http://"\"反斜杠符號(hào) "\t"http://" "制表符 "\n"http://換行符 "\r"http://回車符 "\'"http://"'"單引號(hào) "\""http://"""雙引號(hào) "\u{24}"http://"$"unicode字符
五、關(guān)于字符串下標(biāo)
在Swift中,字符串也可以通過(guò)下標(biāo)的方式來(lái)訪問(wèn)其中字符,并且提供了相關(guān)方法來(lái)方便的移動(dòng)下標(biāo),示例代碼如下:
let tmp = "Hello Swift" //獲取字符開始的下標(biāo)值 0 let indexStart = tmp.startIndex //獲取某個(gè)下標(biāo)后一個(gè)字符的下標(biāo) 1 let next = indexStart.successor() //獲取最后一個(gè)字符的下標(biāo)值 注意有\(zhòng)0的存在 let indexEnd = tmp.endIndex //獲取某個(gè)下標(biāo)前一個(gè)字符的下標(biāo) let pre = indexEnd.predecessor() //通過(guò)下標(biāo)獲取字符串中的字符 t var c = tmp[pre] //進(jìn)行下標(biāo)移動(dòng) o var c2 = tmp[indexStart.advancedBy(4)] //通過(guò)遍歷下標(biāo)來(lái)遍歷字符 H e l l o S w i f t for index in tmp.characters.indices { print("\(tmp[index]) ", terminator: "") }
六、在字符串中插入和移除字符
使用insert函數(shù)來(lái)向字符串中插入一個(gè)字符,示例如下:
var tmp2 = "Hello" tmp2.insert("!", atIndex: tmp2.endIndex)
注意,上面示例代碼中的insert函數(shù)只能用于插入一個(gè)字符,如果需要插入一組字符,需要使用如下方法:
tmp2.insertContentsOf(" Swift".characters, at: tmp2.endIndex)
使用removeAtIndex函數(shù)來(lái)移除字符串中的一個(gè)字符,示例如下:
tmp2.removeAtIndex(tmp2.endIndex.predecessor())
如果要移除一組字符,主要通過(guò)Range來(lái)實(shí)現(xiàn),示例如下:
let range = tmp2.endIndex.advancedBy(-4)..<tmp2.endIndex tmp2.removeRange(range)
相關(guān)文章
Swift自動(dòng)調(diào)整視圖布局AutoLayout和AutoresizingMask功能詳解
這篇文章主要為大家介紹了Swift自動(dòng)調(diào)整視圖布局AutoLayout和AutoresizingMask功能及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06swift 3.0 實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)功能
這篇文章主要介紹了swift 3.0 實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)功能的相關(guān)資料,需要的朋友可以參考下2017-02-02Swift利用Decodable解析JSON的一個(gè)小問(wèn)題詳解
這篇文章主要給大家介紹了關(guān)于Swift利用Decodable解析JSON的一個(gè)小問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04Swift利用CoreData實(shí)現(xiàn)一個(gè)上班簽到的小工具
這篇文章主要給大家介紹了關(guān)于Swift利用CoreData實(shí)現(xiàn)一個(gè)上班簽到小工具的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Swift Extension擴(kuò)展得使用詳細(xì)介紹
在swift中,extension與Objective-C的category有點(diǎn)類似,但是extension比起category來(lái)說(shuō)更加強(qiáng)大和靈活,它不僅可以擴(kuò)展某種類型或結(jié)構(gòu)體的方法,同時(shí)它還可以與protocol等結(jié)合使用,編寫出更加靈活和強(qiáng)大的代碼2022-09-09在一個(gè)項(xiàng)目中同時(shí)使用Swift和Objective-C代碼混合編程的方法
這篇文章主要介紹了在一個(gè)項(xiàng)目中同時(shí)使用Swift和Objective-C代碼的方法,在一個(gè)工程中同時(shí)使用Swift和Objective-C混合語(yǔ)言編程的方法,需要的朋友可以參考下2014-07-07