swift 字符串

字符串字面量

可以在代碼中包含一段預定義的字符串值作爲字符串字面量。字符串字面量是由雙引號包裹着的具有固定順序的文本字符集。字符串字面量可以用於爲常量和變量提供初始化值:
let someString = "some string"

初始化空字符串

要創建一個空字符串作爲初始值,可以將空的字符串字面量賦值給變量,也可以初始化一個新的string實例:
        var emptyString = ""
        var anotherEmptyString = String()
可以通過檢查其bool類型的isEmpty屬性來判斷字符串是否爲空:
  if emptyString.isEmpty{
        print("empty")
  }

字符串可變性

可以通過將一個特定字符串分配給一個變量來對其進行修改,或者分配給一個常量來保證其不會被修改:
 var variableString = "Horse"
 variableString += "and carriage"

使用字符

 for character in "Dog!?".characters {
            print(character)
 }

通過標明一個Character類型並用字符字面量進行賦值,可以建立一個獨立的字符串常量或者變量:
        let exclamationMark:Character = "!"
字符串可以通過傳遞一個值類型爲Character的數組作爲自變量來初始化:
let catCharacters:[Character] = ["C","a","t","!","?"]
let catString = String(catCharacters)
print(catString)

連接字符串和字符

字符串可以通過加法運算符相加在一起創建一個新的字符串:
 let string1 = "hello"
        let string2 = "there"
        var welcome = string1 + string2
可以通過加法賦值運算符將一個字符串添加一個已經存在字符串變量上:
var instruction = "look over"
        instruction += string2
可以用append() 方法將一個字符附加到一個字符串變量的尾部:
welcome.append(exclamationMark)

字符串插值

字符串插值是一種構建新字符串的方式,可以在其中包含常量、變量、字面量和表達式。插入的字符串字面量的每一項都在以反斜線爲前綴的圓括號中:
     let multiplier = 3
        let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

訪問和修改字符串

字符串索引

每一個String值都有一個關聯的索引類型,String.Index,它對應這字符串中的每一個Character的位置
前面提到,不同的字符可能會佔用不同數量的內存空間,所以要知道Character的確定位置,就必須從String開頭遍歷每個Unicode標量直到結尾。因此,swift的字符串不能用整數做索引。
使用startIndex屬性可以獲取一個String的第一個Character的索引。使用endIndex屬性可以獲取最後一個Character的後一個位置的索引。因此,endIndex屬性不能作爲一個字符串的有效下標。如果String是空串,startIndex和endIndex是相等的。
通過調用String的index(before:)或index(after:)方法,可以立即得到前面或者後面的一個索引。還可以通過調用index(_:offectBy:)方法來獲取對應偏移量的索引,這種方法可以避免多次調用index(before:)或index(after:)方法。
 let greeting = "Guten Tag!"
        greeting[greeting.startIndex];
        greeting[greeting.index(before: greeting.endIndex)]
        greeting[greeting.index(after: greeting.startIndex)]
        let index = greeting.index(greeting.startIndex, offsetBy: 7)
        greeting[index]
試圖獲取越界索引對應的Character,將引發一個運行時錯誤。
   greeting[greeting.endIndex]
        greeting.index(after: greeting.endIndex)
使用characters屬性的indices屬性會創建一個包含全部索引的範圍,用來在一個字符串中訪問單個字符。
   for index in greeting.characters.indices {
            print("\(greeting[index])")
        }

插入和刪除

調用insert(_:at:)方法可以在一個字符串的指定索引插入一個字符,調用insert(contentsOf:at:)方法可以在一個字符串的指定索引插入一段字符串。
var welcome = "hello"
        welcome.insert("!", at: welcome.endIndex)
        welcome.insert(contentsOf: "there".characters, at: welcome.index(before: welcome.endIndex))
調用remove(at:)方法可以在一個字符串的指定索引刪除一個字符,調用removeSubrange(_:)方法可以在一個字符串的指定索引刪除一個子字符串。
  welcome.remove(at: welcome.index(before: welcome.endIndex))
        let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
        welcome.removeSubrange(range)

取自《the swift programming language》中文版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章