天天看點

Swift解讀專題四——字元串與字元

Swift解讀專題四——字元串與字元

一、引言

        Swift中提供了String類型與Characters類型來處理字元串和字元資料,Swift中的String類型除了提供了許多友善開發者使用的方法外,還可以與Foundation架構的NSString類進行轉換,使用起來十分友善。

二、String基礎

        在Swift中,使用雙引号來定義字元串,開發者可以通過如下代碼來建立一個字元串常量:

let str = "Hello, playground"      

可以通過下面兩種方式來建立空字元串:

let str1 = ""
let str2 = String()      

調用isEmpty方法可以判斷某個字元串是否為空字元串,這個方法将傳回一個Bool值,可以直接用于if語句:

if str1.isEmpty {
    print("this String Object is Empty")
}      

不像Objective-C有NSString與NSMutableString的差別,在Swift中,如果需要建立可變的字元串,隻需用變量來接收:

var str3 = "Hello"
str3 += " "+"World"//str3 = Hello World      

String也可以使用插值的方法來構造新的字元串,使用\()的方式來将插值的表達式寫在小括号内,示例如下:

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"//3 times 2.5 is 7.5      

擷取字元串的長度使用如下代碼:

str3.characters.count      

Swift中的String可以直接使用==運算符來進行比較,示例如下:

let comStr1 = "one two"
let comStr2 = "one two"
comStr1==comStr2//true      

下面示例的代碼,用來檢驗字元串是否包含字首與字尾:

let tmp3 = "thank you"
tmp3.hasPrefix("thank")//true
tmp3.hasSuffix("you")//true      

三、Character的使用

        Character為Swift中的字元類型,在for-in循環中,可以将字元串中所有的字元進行周遊:

for chara in str3.characters {
    print(chara)
}      

也可以建立單獨的字元類型量值,示例如下:

let char1 = "????"
var cgar2 = "HS"      

事實上,Sting字元串也可以通過Character字元數組進行初始化:

let chars:[Character] = ["H","e","l","l","o"]
let str4 = String(chars)      

向字元串中追加字元使用如下方法:

var str5 = ""
let ca:Character = "a"
str5.append(ca)      

四、字元串中的特殊字元

        字元串中的特殊字元主要指轉義字元,Swift中的轉義字元列舉如下:

"\0"//"" 空白符
"\\"//"\"反斜杠符号
"\t"//" "制表符
"\n"//換行符
"\r"//回車符
"\'"//"'"單引号
"\""//"""雙引号
"\u{24}"//"$"unicode字元      

五、關于字元串下标

        在Swift中,字元串也可以通過下标的方式來通路其中字元,并且提供了相關方法來友善的移動下标,示例代碼如下:

let tmp = "Hello Swift"
//擷取字元開始的下标值 0
let indexStart = tmp.startIndex
//擷取某個下标後一個字元的下标 1
let next = indexStart.successor()
//擷取最後一個字元的下标值 注意有\0的存在 
let indexEnd = tmp.endIndex
//擷取某個下标前一個字元的下标
let pre = indexEnd.predecessor()
//通過下标擷取字元串中的字元 t
var c = tmp[pre]
//進行下标移動 o
var c2 = tmp[indexStart.advancedBy(4)]
//通過周遊下标來周遊字元 H e l l o  S w i f t
for index in tmp.characters.indices {
     print("\(tmp[index]) ", terminator: "")
}
      

六、在字元串中插入和移除字元

        使用insert函數來向字元串中插入一個字元,示例如下:

var tmp2 = "Hello"
tmp2.insert("!", atIndex: tmp2.endIndex)      

注意,上面示例代碼中的insert函數隻能用于插入一個字元,如果需要插入一組字元,需要使用如下方法:

tmp2.insertContentsOf(" Swift".characters, at: tmp2.endIndex)      

使用removeAtIndex函數來移除字元串中的一個字元,示例如下:

tmp2.removeAtIndex(tmp2.endIndex.predecessor())      
let range = tmp2.endIndex.advancedBy(-4)..<tmp2.endIndex
tmp2.removeRange(range)