Swift和Java關於字符串和字符的比較

1. 字符串字面量swift

Swift和Java關於字符串操做大同小異。ide

Swift:字符串字面量(String Literals):咱們能夠在代碼中包含一段預約義的字符串值做爲字符串字面量。 字符串字面量是由雙引號 ("") 包裹着的具備固定順序的文本字符集。字符串字面量能夠用於爲常量和變量提供初始值。函數

代碼以下:ui

let someString = "Some string literal value"

字符串字面量能夠包含如下特殊字符:spa

  • 轉義字符\0(空字符)、\\(反斜線)、\t(水平製表符)、\n(換行符)、\r(回車符)、\"(雙引號)、\'(單引號)。
  • Unicode 標量,寫成\u{n}(u爲小寫),其中n爲任意的一到八位十六進制數。

初始化空字符串 (Initializing an Empty String):爲了構造一個很長的字符串,能夠建立一個空字符串做爲初始值。 能夠將空的字符串字面量賦值給變量,也能夠初始化一個新的String實例,代碼以下:code

var emptyString = ""
var anotherEmptyString = String()
// 初始化 String 實例
// 兩個字符串均爲空並等價。

Swift 中的字符串是否能夠修改僅經過定義的是變量仍是常量來決定,實現了多種類型可變性操做的統一。orm

Swift 的String類型是值類型。 若是您建立了一個新的字符串,那麼當其進行常量、變量賦值操做或在函數/方法中傳遞時,會進行值拷貝。blog

使用字符(Working with Characters):Swift 的String類型表示特定序列的Character(字符) 類型值的集合。 每個字符值表明一個 Unicode 字符。 您可利用for-in循環來遍歷字符串中的每個字符,代碼以下:ip

for character in "Dog!🐶" {
    print(character)
}
// D
// o
// g
// !
// 🐶

計算字符數量 (Counting Characters)代碼以下:element

let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
 print("unusualMenagerie has \(unusualMenagerie.characters.count) characters")

字符串插值 (String Interpolation):字符串插值是一種構建新字符串的方式,能夠在其中包含常量、變量、字面量和表達式。 您插入的字符串字面量的每一項都被包裹在以反斜線爲前綴的圓括號中,代碼以下:

let multiplier = 3
let message = "\(multiplier) 乘以 2.5 是 \(Double(multiplier) * 2.5)"
// message 是 "3 乘以 2.5 是 7.5"

2. 字符串比較

Swift 提供了三種方式來比較字符串的值:字符串相等、前綴相等和後綴相等。

字符串相等 (String Equality):兩個字符串以同一順序包含徹底相同的字符,則認爲二者字符串相等,代碼以下:

let quotation = "咱們是同樣同樣滴."
        let sameQuotation = "咱們是同樣同樣滴."
        if quotation == sameQuotation {
            print("這兩個字符串被認爲是相同的")
        }
        // 打印輸出:"這兩個字符串被認爲是相同的"

Swift沒有像Java同樣,提供equals()這樣的method去比較。

前綴/後綴相等 (Prefix and Suffix Equality):經過調用字符串的hasPrefix/hasSuffix方法來檢查字符串是否擁有特定前綴/後綴。 兩個方法均須要以字符串做爲參數傳入並傳出Boolean值。 兩個方法均執行基本字符串和前綴/後綴字符串之間逐個字符的比較操做。具體代碼以下:

let romeoAndJuliet : [String] = ["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 count = 0;
        for element in romeoAndJuliet{
            if element.hasPrefix("Act 1"){
                count++
            }
        }
        print("There are \(count) scenes in Act 1")
// 打印輸出:"There are 5 scenes in Act 1"

您能夠利用hasPrefix方法來計算話劇中第一幕的場景數,代碼以下:

var act1SceneCount = 0
for scene in romeoAndJuliet {
    if scene.hasPrefix("Act 1 ") {
        ++act1SceneCount
    }
}
print("There are \(act1SceneCount) scenes in Act 1")
// 打印輸出:"There are 5 scenes in Act 1"

3. 大寫和小寫字符串(Uppercase and Lowercase Strings)

咱們能夠經過字符串的uppercaseStringlowercaseString屬性來訪問大寫/小寫版本的字符串。代碼以下:

let normal = "Could you help me, please?"
let shouty = normal.uppercaseString
// shouty 值爲 "COULD YOU HELP ME, PLEASE?"
let whispered = normal.lowercaseString
// whispered 值爲 "could you help me, please?"
相關文章
相關標籤/搜索