Swift語言中字符串相關(guān)的基本概念解析
Swift 的字符是一個單一的字符串文字并且是字符數(shù)據(jù)類型。下面是一個簡單的例子,使用了兩種字符常量:
import Cocoa
let char1: Character = "A"
let char2: Character = "B"
println("Value of char1 \(char1)")
println("Value of char2 \(char2)")
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
Value of char1 A Value of char2 B
如果嘗試存儲多個字符到字符類型的變量或常量,那么 Swift 是不會允許的。試著鍵入下面的示例到 Swift Playground,在編譯之前,就已經(jīng)會得到一個錯誤。
import Cocoa
// Following is wrong in Swift
let char: Character = "AB"
println("Value of char \(char)")
空字符變量
不可能創(chuàng)建一個空的字符變量或常量,這將有空值。下面的語法是不可能的:
import Cocoa
// Following is wrong in Swift
let char1: Character = ""
var char2: Character = ""
println("Value of char1 \(char1)")
println("Value of char2 \(char2)")
從字符串訪問字符
當(dāng)討論 Swift 的字符串,字符串表示的字符值按指定順序的集合。因此,我們可以從給定字符串通過 for-in 循環(huán)來遍歷字符串以訪問單個字符:
import Cocoa
for ch in "Hello" {
println(ch)
}
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
H e l l o
使用字符連接字符串
下面的例子演示了 Swift 字符如何與字符串連接。
import Cocoa
var varA:String = "Hello "
let varB:Character = "G"
varA.append( varB )
println("Value of varC = \(varA)")
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
Value of varC Hello G
Swift 字符串是字符有序集合,如“Hello, World!”,它們是由 Swift 的 String 數(shù)據(jù)類型表示,這也代表字符類型值的集合。
創(chuàng)建字符串
可以通過使用一個字符串文字或創(chuàng)建String類的一個實例來創(chuàng)建一個字符串,如下:
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 )
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
Hello, Swift! Hello, Swift!
空字符串
可以通過使用一個空字符串或創(chuàng)建 String 類的一個實例來創(chuàng)建一個空的字符串,如下所示。還可以檢查一個字符串是否為空,使用布爾屬性 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" )
}
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
stringA is empty stringB is empty
字符串常量
可以指定字符串是否可以修改(或突變),通過將其分配給一個變量,或者通過將其使用 let 關(guān)鍵字分配為常量,如下圖所示:
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 )
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not convertible to '@lvalue UInt8' stringB + = "--Readers--"
字符串插值
字串轉(zhuǎn)換符號是一種通過包括字符串文字內(nèi)的值來構(gòu)造的常量,變量,文本和表達(dá)式來組合一個新的字符串值。
每個項目(變量或常量),插入到字符串被包裹在一對括號內(nèi), 一個反斜杠前綴。下面是簡單的例子:
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 )
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
20 times 100 is equal to 2000.0
字符串連接
可以使用+運算符來連接兩個字符串或字符串和字符,或兩個字符。下面是一個簡單的例子:
import Cocoa
let constA = "Hello,"
let constB = "World!"
var stringA = constA + constB
println( stringA )
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
Hello,World!
字符串長度
Swift 中字符串沒有 length 屬性,但可以使用全局count()函數(shù)來計算字符串中的字符數(shù)。下面是一個簡單的例子:
import Cocoa
var varA = "Hello, Swift!"
println( "\(varA), length is \(count(varA))" )
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
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" )
}
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
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) ")
}
當(dāng)上述代碼被編譯和執(zhí)行時,它產(chǎn)生了以下結(jié)果:
UTF-8 Codes: 68 111 103 226 128 188 240 159 144 182 UTF-16 Codes: 68 111 103 8252 55357 56374
相關(guān)文章
swift實現(xiàn)自動輪播圖效果(UIScrollView+UIPageControl+Timer)
這篇文章主要為大家詳細(xì)介紹了swift實現(xiàn)自動輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09swift 錯誤處理do catch try try!使用詳解
這篇文章主要介紹了swift 錯誤處理do catch try try!使用詳解的相關(guān)資料,需要的朋友可以參考下2023-03-03Swift免費短信驗證碼實現(xiàn)及動態(tài)倒計時功能
這篇文章主要介紹了Swift免費短信驗證碼實現(xiàn)及動態(tài)倒計時功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02詳解在swift中實現(xiàn)NSCoding的自動歸檔和解檔
本篇文章主要介紹了在swift中實現(xiàn)NSCoding的自動歸檔和解檔,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03用SwiftUI實現(xiàn)3D Scroll滾動效果的實現(xiàn)代碼
這篇文章主要介紹了用SwiftUI實現(xiàn)3D Scroll效果的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)2020-04-04