插值字符串中寫在括號中的表達(dá)式不能包含非轉(zhuǎn)義反斜杠(),并且不能包含回車,不過,插值字符串可以包含其他字面量
Swift的char類型是基于Unicode標(biāo)量建立的,幾乎涵蓋了全球的字符,
Oc我記得好像是SCIII什么的...忘了
var a = "12\\"
print(a)
a = "12\0"
print(a)
let a2 = Int(a)
print(a2)
a = "12"
let a3 = Int(a)
print(a3)
// 結(jié)果
/*
12\
12?
nil , 因?yàn)檗D(zhuǎn)義字符\0是空字符,這個a實(shí)際上是12+空字符,所以轉(zhuǎn)出來是nil
Optional(12)
*/
如果不想換行,可以傳遞一個空字符串給terminator參數(shù)
如:
let greeting = "Guten Tag!"
// .indices屬性是創(chuàng)造了一個含有這個字符串的所有范圍,
// 在swift里面,字符串不能用整數(shù)(integer)做索引,如果寫了,直接報錯
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// 結(jié)果
// G u t e n T a g !
Swift中String不可以直接用Int類型的下表來取出單個Char
那么
let num1 = greeting.startIndex.advancedBy(7)
print("\n\(num1)")
let a5 = greeting[num1]
print(a5)
這是可以打印出來的,但是這個num1的類型,不是Int,是Index類型,不知道這是個什么玩意兒..
String 比較
如果兩個字符串(或者兩個字符)的可擴(kuò)展的字形群集是標(biāo)準(zhǔn)相等的,那就認(rèn)為它們是相等的掏父。
例如
let c = "\u{E9}"
print(c)
let d = "\u{65}\u{301}"
print(d)
// 打印結(jié)果都是é,
// 這兩個方式都是é的有效表達(dá)方式,所以認(rèn)為兩者相等
// 但是,英文的A和俄語中的A意思不同,所以即使打印看著一樣,兩者也是不等的
let latinCapitalLetterA: Character = "\u{41}" // 英語
let cyrillicCapitalLetterA: Character = "\u{0410}" // 俄語
if latinCapitalLetterA != cyrillicCapitalLetterA {
print("These two characters are not equivalent")
}
// 打印 "These two characters are not equivalent"
在 Swift 中冰单,字符串和字符并不區(qū)分地域(not locale-sensitive)星瘾。
String前綴和后綴
hasPrefix(:)/hasSuffix(:)
接收一個String類型的參數(shù),返回一個Bool值