天天看點

Swift文法基礎:14 - Swift的字元使用, 計算數量, 連接配接字元串和字元, 字元串插值, 比較字元串...

接着前面的字元串開始講:

1. 使用字元

wift 的 String 類型表示特定序列的字元值的集合。每一個字元值代表一個 Unicode 字元。

可以用 for-in 循環來周遊字元串中的每一個字元:

for character in "Dog!��" {
    println(character)
}
// 列印出來的結果: D
o
g
!
��
           
Swift文法基礎:14 - Swift的字元使用, 計算數量, 連接配接字元串和字元, 字元串插值, 比較字元串...

另外,通過标明一個 Character 類型注解并通過字元字面量進行指派,可以建立一個獨立的字元常量或變量:

2.計算字元數量

在字元和字元串中, 有一個函數是可以列印字元的數量, 比如:

var variableString = "Horse"
variableString += " and carriage"
println("\(countElements(variableString))")
// 列印出來的結果: 18

let unusualMenagerie = "Koala ��, Snail ��, Penguin ��, Dromedary ��"
println("unusualMenagerie has \(countElements(unusualMenagerie)) characters")
// 列印出來的結果: unusualMenagerie has 40 characters
           
Swift文法基礎:14 - Swift的字元使用, 計算數量, 連接配接字元串和字元, 字元串插值, 比較字元串...

PS:

1.不同的 Unicode 字元以及相同 Unicode 字元的不同表示方式可能需要不同數量的 記憶體空間來存儲,是以 Swift 中的字元在一個字元串中表示并不一定占用相同的記憶體空 間。是以,字元串的長度不得不通過疊代字元串中每一個字元的長度來進行計算。如果 您正在處理一個長字元串,需要注意 countElements 函數必須周遊字元串中的字元,以 精準計算字元串的長度。

2.另外需要注意的是通過 countElements 傳回的字元數量并不總是與包含相同字元的 NSString 的 length 屬性相同。NSString 的 length 屬性是基于利用 UTF-16 表示的十 六位 code units 數目,而不是基于 Unicode 字元。為了解決這個問題,NSString 的 length 屬性在被 Swift 的 String 值通路時會被稱為 utf16count。

3.連接配接字元串和字元

和前面一樣, 字元和字元串也可以加在一起的, 但這裡要做一些特殊的處理, 比如:

let string1 = "Hello"
let string2 = " World"

let character1: Character = "!"
let character2: Character = "?"

var welcome = string1 + string2
welcome.append(character1)
println(welcome)
// 列印出來的結果: Hello World!
           

也可以使用加法指派運算:

var characterPlusCharacter = string1
characterPlusCharacter += string2
println(characterPlusCharacter)
// 列印出來的結果: Hello World
           

4.字元串插值:

字元串插值是一種全新的建構字元串的方式,可以在其中包含常量、變量、字面量和表達式, 比如:

let multiplier = 
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
println(message)
// 列印出來的結果: 3 times 2.5 is 7.5
           

PS: 插值字元串中寫在括号中的表達式不能包含非轉義雙引号 ( “” ) 和反斜杠 ( \ ) 并且不能包含回車或換行符。

5.比較字元串

Swift 供了三種方式來比較字元串的值:字元串相等,字首相等和字尾相等。

字元串相等:

let quotation = "We're a lot alike, you and I."
let sameQuotation = "We're a lot alike, you and I."
if quotation == sameQuotation {
    println("These two strings are considered equal")
}
// 列印出來的結果: These two strings are considered equal
           

前字尾相等:

let romeoAndJuliet = [
    "Act 1 Scene 1: Verona, A public place",
    "Act 1 Scene 2: Capulet's mansion",
    "Act 1 Scene 3: A room in Capulet's mansion",
    "Act 1 Scene 4: A street outside Capulet's mansion",
    "Act 1 Scene 5: The Great Hall in Capulet's mansion",
    "Act 2 Scene 1: Outside Capulet's mansion",
    "Act 2 Scene 2: Capulet's orchard",
    "Act 2 Scene 3: Outside Friar Lawrence's cell",
    "Act 2 Scene 4: A street in Verona",
    "Act 2 Scene 5: Capulet's mansion",
    "Act 2 Scene 6: Friar Lawrence's cell"
]

var act1SceneCount = 
    for scene in romeoAndJuliet {
    if scene.hasPrefix("Act 1 ") {
        ++act1SceneCount
    }
}
println("There are \(act1SceneCount) scenes in Act 1")
// 列印出來的結果: There are 5 scenes in Act 1
           
var mansionCount = 
var cellCount = 
for scene in romeoAndJuliet {
    if scene.hasSuffix("Capulet's mansion"){
        ++mansionCount
    } else if scene.hasSuffix("Friar Lawrence's cell"){
        ++cellCount
    }
}
println("\(mansionCount) mansion scenes; \(cellCount) cell scenes")
// 列印出來的結果: 6 mansion scenes; 2 cell scenes
           

6.大小寫字元串

在Swift當中也有一個函數, 可以直接把字元串變成全部大寫字母, 或者全部小寫字母:

let normal = "Could you help me, please?"
let shouty = normal.uppercaseString
let whispered = normal.lowercaseString

println("\(shouty), \(whispered)")
// 列印出來的結果:COULD YOU HELP ME, PLEASE?, could you help me, please?
           

好了, 這次我們就講到這裡, 下次我們繼續~

轉載于:https://www.cnblogs.com/iOSCain/p/4333124.html