Swift語言中字串相關的基本概念解析_Swift

來源:互聯網
上載者:User

Swift 的字元是一個單一的字串文字並且是字元資料類型。下面是一個簡單的例子,使用了兩種字元常量:

複製代碼 代碼如下:

import Cocoa

let char1: Character = "A"
let char2: Character = "B"

println("Value of char1 \(char1)")
println("Value of char2 \(char2)")


當上述代碼被編譯和執行時,它產生了以下結果:

Value of char1 AValue of char2 B

如果嘗試儲存多個字元到字元類型的變數或常量,那麼 Swift 是不會允許的。試著鍵入下面的樣本到 Swift Playground,在編譯之前,就已經會得到一個錯誤。

複製代碼 代碼如下:

import Cocoa

// Following is wrong in Swift
let char: Character = "AB"

println("Value of char \(char)")


Null 字元變數
不可能建立一個空的字元變數或常量,這將有空值。下面的文法是不可能的:
複製代碼 代碼如下:

import Cocoa

// Following is wrong in Swift
let char1: Character = ""
var char2: Character = ""

println("Value of char1 \(char1)")
println("Value of char2 \(char2)")


從字串訪問字元
當討論 Swift 的字串,字串表示的字元值按指定順序的集合。因此,我們可以從給定字串通過 for-in 迴圈來遍曆字串以訪問單個字元:
複製代碼 代碼如下:

import Cocoa

for ch in "Hello" {
   println(ch)
}


當上述代碼被編譯和執行時,它產生了以下結果:

Hello

使用字元連接字串
下面的例子示範了 Swift 字元如何與字串串連。

複製代碼 代碼如下:

import Cocoa

var varA:String = "Hello "
let varB:Character = "G"

varA.append( varB )

println("Value of varC  =  \(varA)")


當上述代碼被編譯和執行時,它產生了以下結果:

Value of varC Hello G

Swift 字串是字元有序集合,如“Hello, World!”,它們是由 Swift 的 String 資料類型表示,這也代表字元類型值的集合。

建立字串
可以通過使用一個字串文字或建立String類的一個執行個體來建立一個字串,如下:

複製代碼 代碼如下:

import Cocoa

// String creation using String literal
var stringA = "Hello, Swift!"
println( stringA )

// String creation using String instance
var stringB = String("Hello, Swift!")
println( stringB )


當上述代碼被編譯和執行時,它產生了以下結果:

Hello, Swift!Hello, Swift!

Null 字元串
可以通過使用一個Null 字元串或建立 String 類的一個執行個體來建立一個空的字串,如下所示。還可以檢查一個字串是否為空白,使用布爾屬性 isEmpty。

複製代碼 代碼如下:

import Cocoa

// Empty string creation using String literal
var stringA = ""

if stringA.isEmpty {
   println( "stringA is empty" )
} else {
   println( "stringA is not empty" )
}

// Empty string creation using String instance
let stringB = String()

if stringB.isEmpty {
   println( "stringB is empty" )
} else {
   println( "stringB is not empty" )
}


當上述代碼被編譯和執行時,它產生了以下結果:

stringA is emptystringB is empty

字串常量
可以指定字串是否可以修改(或突變),通過將其分配給一個變數,或者通過將其使用 let 關鍵字分配為常量,如下圖所示:

複製代碼 代碼如下:

import Cocoa

// stringA can be modified
var stringA = "Hello, Swift!"
stringA + = "--Readers--"
println( stringA )

// stringB can not be modified
let stringB = String("Hello, Swift!")
stringB + = "--Readers--"
println( stringB )


當上述代碼被編譯和執行時,它產生了以下結果:

Playground execution failed: error: <EXPR>:10:1: error: 'String' is not convertible to '@lvalue UInt8'stringB + = "--Readers--"

字串插值
字串轉換符號是一種通過包括字串文字內的值來構造的常量,變數,文本和運算式來組合一個新的字串值。

每個項目(變數或常量),插入到字串被包裹在一對括弧內, 一個反斜線首碼。下面是簡單的例子:

複製代碼 代碼如下:

import Cocoa

var varA   = 20
let constA = 100
var varC:Float = 20.0

var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
println( stringA )


當上述代碼被編譯和執行時,它產生了以下結果:

20 times 100 is equal to 2000.0

字串串連
可以使用+運算子來串連兩個字串或字串和字元,或兩個字元。下面是一個簡單的例子:

複製代碼 代碼如下:

import Cocoa

let constA = "Hello,"
let constB = "World!"

var stringA = constA + constB

println( stringA )


當上述代碼被編譯和執行時,它產生了以下結果:

Hello,World!

字串長度
Swift 中字串沒有 length 屬性,但可以使用全域count()函數來計算字串中的字元數。下面是一個簡單的例子:

複製代碼 代碼如下:

import Cocoa

var varA   = "Hello, Swift!"

println( "\(varA), length is \(count(varA))" )


當上述代碼被編譯和執行時,它產生了以下結果:

Hello, Swift!, length is 13

字串比較
可以使用 == 操作符兩個比較兩個字串變數或常量。下面是一個簡單的例子:

複製代碼 代碼如下:

import Cocoa

var varA   = "Hello, Swift!"
var varB   = "Hello, World!"

if varA == varB {
   println( "\(varA) and \(varB) are equal" )
} else {
   println( "\(varA) and \(varB) are not equal" )
}


當上述代碼被編譯和執行時,它產生了以下結果:

Hello, Swift! and Hello, World! are not equal

Unicode字串
可以通過遍曆在 UTF8 和 UTF16 屬性訪問字串的 UTF-8 和 UTF-16 表示,如下面的樣本:

複製代碼 代碼如下:

import Cocoa

var unicodeString   = "Dog‼"

println("UTF-8 Codes: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}

print("\n")

println("UTF-16 Codes: ")
for code in unicodeString.utf16 {
   print("\(code) ")
}


當上述代碼被編譯和執行時,它產生了以下結果:

UTF-8 Codes: 68 111 103 226 128 188 240 159 144 182 UTF-16 Codes: 68 111 103 8252 55357 56374

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.