字符串由N個(gè)字符連接而成,用String類型表示,可以包含任意字符,在一對(duì)雙引號(hào)之內(nèi)。
初始化字符串
(1)字面量賦值
let str = "this is a string"
var tempString = "this is a string"
(2)通過創(chuàng)建String實(shí)例的方式初始化字符串
let anotherString = String()
上面的代碼初始化了一個(gè)空字符串,那么判斷字符串是否為空可以用isEmpty來判斷,isEmpty是String的一個(gè)屬性。
let anotherString = String()
if anotherString.isEmpty {
print("這是個(gè)空字符串")
}
字符串的基本操作
我們經(jīng)常用到的字符串的操作包括獲取長(zhǎng)度、遍歷、拼接、插值、和格式字符串。下面分別介紹這幾種操作。
(1)獲取字符串長(zhǎng)度
字符串的長(zhǎng)度有兩種形式:一種是字符串中字節(jié)的個(gè)數(shù)lengthOfBytes,另一種是直接計(jì)算字符的個(gè)數(shù)。
let string = "Hello World!"
let length1 = string.lengthOfBytes(using:String.Encoding.utf8)
let length1 = string.characters.count
如果是英文字符串,那么獲取的字節(jié)個(gè)數(shù)和字符個(gè)數(shù)是一樣的,因?yàn)槊總€(gè)英文字母是一個(gè)字節(jié)。如果是中文字符串,每個(gè)中文占用3個(gè)字符。字符串長(zhǎng)度通常是字符的個(gè)數(shù),所以推薦大家使用字符串的characters屬性的count屬性來計(jì)算字符串長(zhǎng)度。
(2)字符串的遍歷
字符串的遍歷很簡(jiǎn)單,可以用for-in來遍歷字符串中的每一個(gè)字符。
(3)拼接字符串和字符
使用加法賦值運(yùn)算符連接字符串
var varString = "jian"
varString += "shu"
print(varString)
使用加法運(yùn)算符拼接字符串
let string1 = "Hello"
let string2 = "World"
var string3 = string1 + string2
使用append方法追加字符串
使用append方法可以將一個(gè)字符追加到一個(gè)可變字符串的尾部。
let string1 = "Hello"
let string2 = "World"
var string3 = string1 + string2
let c:Character = "!"
string3.append(c)
(4)字符串插值
let multiplier = 3
let message = "\(multiplier)誠(chéng)意2.5等于\(Double(multiplier)*2.5)"
(5)格式字符串format
let hour = 3
let minute = 4
let seconds = 9
let dateString1 = String(format: "%02d:%02d:%02d", arguments:[hour, minute, seconds])
let dateString2 = String(format: "%02d:%02d:%02d",hour,minute,seconds)
(6)字符串截取
使用as關(guān)鍵字將string當(dāng)做NSString類型的對(duì)象使用,然后調(diào)用substring(with range:NSRange)方法,進(jìn)行截取。
let string = "Hello World!"
let subString = (string as NSString).substring(with:NSMakeRange(1,5))
(7)字符串比較
使用“==”或者“!=”判斷兩個(gè)字符串是否相同
let emptyStr1 = ""
let emptyStr2 = String()
if emptyStr1 == emptyStr2 {
print("相同")
} else {
print("不相同")
}
比較字符串的前綴或后綴
使用hasPrefix和hasSuffix兩個(gè)方法用來檢查字符串是否擁有特定的前綴和后綴。
let docFolder = ["java.docx", "swift.docx", "miao.png","OC.docx"]
var docCount = 0
for doc in docFolder {
if doc.hasSuffix(".docx") {
docCount += 1
}
}
print(docCount)