String是例如“hello, world”,“海賊王” 這樣的有序的Character(字符)類型的值的集合,通過String類型來表示。
Swift 的String類型與 Foundation NSString類進行了無縫橋接。如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架進行工作。所有NSString API 都可以調用您創建的任意String類型的值。除此之外,還可以使用本章介紹的String特性。您也可以在任意要求傳入NSString實例作為參數的 API 中使用String類型的值作為替代
注:Swift 的String類型是值類型。 如果您創建了一個新的字符串,那么當其進行常量、變量賦值操作或在函數/方法中傳遞時,會進行值拷貝。 任何情況下,都會對已有字符串值創建新副本,並對該新副本進行傳遞或賦值操作。
1.字符串定義
var s = "abc"
var s1:String = "abc"
// 兩個字符串均為空並等價。 var emptyString = "" // 空字符串字面量 var anotherEmptyString = String() // 初始化 String 實例
字符串字面量可以包含以下特殊字符:
-
- 轉義字符
\0(空字符)、\\(反斜線)、\t(水平制表符)、\n(換行符)、\r(回車符)、\"(雙引號)、\'(單引號)。 - 單字節 Unicode 標量,寫成
\xnn,其中nn為兩位十六進制數。 - 雙字節 Unicode 標量,寫成
\unnnn,其中nnnn為四位十六進制數。 - 四字節 Unicode 標量,寫成
\Unnnnnnnn,其中nnnnnnnn為八位十六進制數。
- 轉義字符
let wiseWords = "\"我是要成為海賊王的男人\" - 路飛" // "我是要成為海賊王的男人" - 路飛 let dollarSign = "\x24" // $, Unicode 標量 U+0024 let blackHeart = "\u2665" // ♥, Unicode 標量 U+2665 let sparklingHeart = "\U0001F496" // 💖, Unicode 標量 U+1F496
2.字符串拼接
//字符串拼接 var x = "x" var y = "y" var z = x + y var m = z + "m" var n = "n" n += m //使用\()完成字符串的插值 var result = "\(x)==\(y)==\(z)==\(m)==\(n)" println(result)//結果:x==y==xy==xym==nxym //字符串與字符拼接 let s1 = "hello" let c1: Character = "!" let plus1 = s1 + c1 // 等於 "hello!" let plus2 = c1 + s1 // 等於 "!hello"
3.字符串遍歷
var myString = "This is a string"
for character in myString{
println(character)
}
4.字符個數統計
var myString = "Here is my string, lets count the characters!" println(myString.characters.count)
5.字符串比較 & 是否包含前后綴
var check1:String = "Swift is good!"
var check2:String = "Swift is good!"
//字符串是否相等
if check1 == check2 {
println("check1 = check2")
} else {
println("check1 != check2")
}
//是否包含前綴
var preCheck = "Swift"
if check1.hasPrefix(preCheck) {
println("包含前綴")
}
//是否包含后綴
var sufCheck = "good!"
if check1.hasSuffix(sufCheck) {
println("包含后綴")
}
6.大小寫轉換
let myString = "Wait a moment, please." let newString = myString.uppercaseString //The string is now "WAIT A MOMENT, PLEASE." let myString = "Wait a moment, please." let newString = myString.lowercaseString // The string is now "wait a moment, please."
7.字符串是否包含其他字符串
var myString = "This is a string test"
if myString.rangeOfString("string") {
println("exists")
}
8.字符串截取
//截取字符串的標識位從1開始計數 let myString = "ABCDEFGHI" //1.從目標標識位后一個字符開始截取余下的字符串 let mySubstring = (myString.substringFromIndex(2)) println(mySubstring) // "CDEFGHI" //2.從第一個字符截取到目標標識位 let mySubstring2 = (myString.substringToIndex(4)) println(mySubstring2) // "ABCD"
9.字符串去空格
var myString = " Let's trim the whitespace " var newString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
10.字符串分割為字符串數組
//單一分隔符:只有一種分割符
var myString = "Berlin, Paris, New York, San Francisco"
//1.隱式定義字符串數組
var myArray = myString.componentsSeparatedByString(",")
//2.顯示定義字符串數組
var myArray2 : String[] = myString.componentsSeparatedByString(", ")
for em in myArray2 {
print(em) //Berlin Paris New York San
}
//多重分割符:有2個或兩個以上分隔符
var myString2 = "One-Two-Three-1 2 3"
var array2:String[] = myString2.componentsSeparatedByCharactersInSet(NSCharacterSet (charactersInString: "- "))
//["One", "Two", "Three", "1", "2", "3"]
11.字符串轉換為NSData
let myString = "String to encode" let string: NSString = myString let data = string.dataUsingEncoding(NSUTF8StringEncoding)
參考文章:http://www.learnswiftonline.com/reference-guides/string-reference-guide-for-swift/
