Swift中的字符串和OC的是可以無(wú)縫橋接的.其中的一些細(xì)節(jié)還是要說(shuō)的.
Swift中的字符串不像OC中的需要添加@前綴,而是直接使用雙引號(hào)("").
let someString = "aaa"
let someString2: String = "aaa"
上面兩種寫(xiě)法是一樣的.編譯器會(huì)自動(dòng)推斷類(lèi)型.這點(diǎn)以后就不再提了.應(yīng)該會(huì)習(xí)慣的.
任何創(chuàng)建一個(gè)空的字符串呢?有兩種方法:
var emptyString = ""
var emptyString2 = String()
而且Swift提供了一個(gè)屬性,可以很簡(jiǎn)單的判斷字符串是否為空.
if emptyString2.isEmpty {
print("字符串為空")
}
字符串拼接
Swift中的字符串拼接和java中的很像,可以直接進(jìn)行加運(yùn)算.因?yàn)樵赟wift中的+不在是加法運(yùn)算.
var str1 = "a"
str1 += "b"
// str1這時(shí)為"ab"
需要注意的是常量字符串是不能進(jìn)行加操作的,因?yàn)槌A渴遣荒苄薷牡?
遍歷字符串
for character in "Dog!??".characters {
print(character)
}
** 追加 **
str1.appendContentsOf("dog")
// 當(dāng)然不如之間進(jìn)行加方便
使用索引訪問(wèn)
var str = "dog"
// 我們可以很輕松的根據(jù)下標(biāo)來(lái)獲取字符串中對(duì)應(yīng)的字符
// 最容易獲取到的是start和end,要注意endIndex會(huì)出現(xiàn)下標(biāo)越界的問(wèn)題,對(duì)OC有經(jīng)驗(yàn)的話(huà),應(yīng)該不難理解.
let ch1 = str[str.characters.startIndex] // d
let ch2 = str[str.characters.startIndex.successor()] // o
// advancedBy()參數(shù)是正數(shù)則向后取,參數(shù)為負(fù)數(shù)則向前取
let ch3 = str[str.characters.endIndex.advancedBy(-1)] //g
** 插入和刪除 **
str.insert("m", atIndex: str.characters.startIndex) // 插入字符 m
str.insertContentsOf("MY".characters, at: str.characters.startIndex) // 插入字符串 MY
str.removeAtIndex(str.characters.startIndex.advancedBy(2)) // 刪除字符 m
str.removeRange(str.characters.startIndex..<str.characters.startIndex.advancedBy(2)) // 刪除范圍
** 相等 **
在OC中判斷字符串是相同的我們會(huì)使用isEqual方法.在Swift中我們可以直接使用 == 或者 != 來(lái)判斷字符串是否相同
** 前后綴 **
str.hasPrefix("d") // 是否有前綴 d
str.hasSuffix("g") // 是否有后綴 g
** 與NSString橋接 **
有一些方法是OC特有的,在沒(méi)有導(dǎo)入Foundation 或者UIKit之前,會(huì)報(bào)錯(cuò).導(dǎo)入框架之后再能正常使用,這點(diǎn)需要注意
let text = "0123456789"
if let range = text.rangeOfString("5",
options: .BackwardsSearch) {
let suffix = String(text.characters.suffixFrom(range.endIndex))
}