閱讀778 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Swift學習之十:字符串與字符(Strings and Characters)

字符串是有序的字符集,如"hello, world" 或者 "albaatross".在Swift中字符串類型是String,由有序的Character組合而成。

Swift中的String與Character類型提供了快速,與Unicode兼容的方式在代碼中操作文本。String字符串的創建與操作的語法

是輕量的,可閱讀的,與C語言中的字符串語法類似。字符串的連接可以使用+操作符直接相連,字符串可變性是通過選擇

常量或者變量,就像Swift中的其它任何類型一樣。

// 字符串是由""括起來的
let someString = "Some string literal value"


字符串中可以包含特殊字符,如:

let wiseWords = "\"Imagintion is more important than knowledge\" - Einstein"
let dollarSign = "\x24" 
let balckHeart = "\u2665"
let sparkingHeart = "\U0001F496"

初始化空串:

// 下麵這兩個都是是空串,這兩個是相等的
var emptyString = ""
var anotherEmptyString = String()

判斷空串:

if emptyString.isEmpty {
  println("Nothing to see here")
}


字符串可變性:

把字符串賦值給一個變量,就可以修改,賦值給一個常量,就不能修改。

var variableString = "Horse"
variableString += " and carriage" // variableString is now "Horse and carriage"

let constantString = "Highlander"
constantString += "and another Highlander" // compile error


Strings是值類型而不是引用類型。

當創建一個新的字符串時,String值是copy的。

也就是說在傳參數給函數或者方法,或者賦值給某個常量或者變量時,是copy一份。


字符串中的字符:Character類型

使用for-in循環:

// D

// o

// g

// !

// 這裏沒有顯示指明類型,如果也可以顯示指定:for character: Character in "Dog!"

for character in "Dog!" {
   println(character)
}

Swift提供了一個全局的計算元素個數的函數:countElements

let msg = "I am a boy, and I love Swift."
println("msg has \(countElements(msg) characters)")

NOTE

不同的Unicode字符和相同的Unicode字符的不同呈現會需要不同的內存來存儲。正因為這樣,在Swift中並不是字符串中每個

Character都占用相同的內存,因此計算字符串的長度時,需要遍曆完整個字符串才能計算出來。


連接字符串和字符(使用+)

let str1 = "hello"
let str2 = " mimi"
let character1: Character = "!"
let character2: Character = "?"

let stringPlusCharacter = str1 + character1 // equals "hello!"
let stringPlusString = str1 + str2// equals "hello mimi"
let characterPlusString = character1 + str1 // equals "!hello"
let characterPlusCharacter = character1 + character2 // equals "!?"

使用 += 給已經存在的字符串追加字符串

var instroduction = "look over"
let str = ",I am here"
instroduction += str // 結果是instroduction變成了"look over,I am here"


NOTE

不能把字符串或者字符追加到字符(Character)中,因為字符隻能包含單一字符.


字符串插入(String Interpolation)

let multiplier = 3
// 通過\(變量或者常量名)可以插入字符串
// 結果是:3 times 2.5 is 7.5
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

字符串比較:字符串相等、字符串前綴相關、字符串後綴相等

字符串相等是在兩個字符串包含完全相同的字符且相同的順序才是相等的。

如:

var quotaton = "We're a lot alike, you and I."
var sameQuotation = "We're a lot alike,you and I."
if quotaton == sameQuotation {
   println("They are equal strings")
}


前綴相等比較:

如:

let str = "I am your lover"
let anotherStr = "I am your lover two"

if anotherStr.hasPrefix(str) {
  println("\(anotherStr) has prefix \(str)")
}

後綴相等比較

如:

let str = "I am your lover"
let anotherStr = "really? I am your lover"

if anotherStr.hasSuffix(str) {
  println("\(anotherStr) has suffix \(str)")
}

字符串大小寫轉換(uppercase and lowercase strings)

如:

let normal = "Could you help me, please?"
let shouty = normal.uppercaseString
println(shouty)

let whispered = normal.lowercaseString
println(whispered)




最後更新:2017-04-03 07:56:55

  上一篇:go 高效程序員的特征:聰明,懶惰
  下一篇:go Swift學習這十二:(續)控製流