? ? 可以使用for-in循環(huán)迭代一個字符串來訪問每一個字符值:
? ??????for character in "Dog!??" {
????????? ? print(character)
????????}
????????// D
????????// o
????????// g
????????// !
????????// ??
? ? 你可以創(chuàng)建一個單獨的Character常量或者變量放椰,使用只包含了一個字符的字符串字面量钾埂,并且在常量或者變量后面提供Character類型標注搂根;
? ??????let exclamationMark: Character = "!"
? ? String值可以通過傳入一個Character數(shù)組來構(gòu)建:
? ??????let catCharacters: [Character] = ["C", "a", "t", "!", "??"]
????????let catString = String(catCharacters)
????????print(catString)
????????// 打印 "Cat!??
字符串和字符? ??
????字符串可以通過加符運算符相加創(chuàng)造一個新的字符串:
? ??????let string1 = "hello"
????????let string2 = " there"
????????var welcome = string1 + string2
????????// welcome 現(xiàn)在是 "hello there"
? ? 你也可以使用加法運算符把一個字符串添加到另外一個字符串后面:
? ??????var instruction = "look over"
????????instruction += string2
????????// instruction 現(xiàn)在是 "look over there”
? ? 也可以用字符串的append方法把一個字符添加到另一個字符串后面:
? ??????let exclamationMark: Character = "!"
????????welcome.append(exclamationMark)
????????// welcome 現(xiàn)在是 "hello there!”
NOTE:不可以把一個字符串或者字符添加到另外一個字符的后面,字符是只可以包含一個字符响委。
? ? 也許你使用多行字符串字面量創(chuàng)建了一個有很多行的長字符串,并且你希望每一行的結(jié)尾都有一個換行符,也包括最后一行新思。比如:
????????let badStart = """
????????one
????????two
????????"""
????????let end = """
????????three
????????"""
????????print(badStart + end)
????????// 打印出2行:
????????// one
????????// twothree
????????let goodStart = """
????????one
????????two
? ??????
????????"""
????????print(goodStart + end)
????????// 打印出3行:
????????// one
????????// two
????????// three
????上面的代碼中,把badStart和end連接成個了一個打印出2行的字符串赘风,當(dāng)然這是不符合我們的需求的夹囚。究其原因,badStart的最后一行不是以換行符結(jié)尾的邀窃,這一行直接和end的第一行連接在了一起荸哟。相反的是,goodStart的每一行都是以換行符結(jié)尾的,所以和end連接之后可以打印出三行鞍历,這是我們需要的結(jié)果舵抹。
字符串插入
? ? 字符串插入是一種創(chuàng)建新字符串的方式,這種方式可以把常量劣砍,變量惧蛹,字面量甚至是表達式包含在一個字符串字面量中。字符串插入在單行和多行字符串字面量中都可以使用刑枝。每一個你插入的元素都被一組括號包圍香嗓,且有前綴反斜杠(\):
? ??????let multiplier = 3
????????let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
????????// ?3 times 2.5 is 7.5
? ? 上面的例子中,multiplier的值以?\(multiplier)的方式被插入到了字符串字面量中装畅,這是一個占位符靠娱,當(dāng)字符串字面量被求值的時候會被替換成multiplier真正的值,并且創(chuàng)建一個真正的字符串洁灵。
? ??multiplier也同時是上面字符串字面量的中一個表達式的一部分饱岸,這個表達式計算Double(multiplier) * 2.5的結(jié)果,并且把結(jié)果7.5插入到字面量中徽千。在這里,表達式以\(Double(multiplier) * 2.5)的方式被插入到字面量中汤锨。
NOTE:使用字符串插入的時候双抽,括號中的表達式里面不可以包含未轉(zhuǎn)移的斜杠,回車闲礼,或者換行牍汹。當(dāng)然,它們是可以包含在其他字符串字面量中的柬泽。