Swift - 字符串、字符

一.Swift字符串

Swift字符串是一系列字符的集合,例如:“Hello world!”這樣的的有序字符類型的值的集合,它的數據類型String。

1.創建字符串

你可以通過使用字符串字面量或String類的實力來創建一個字符串:

//使用字符串字面量
var stringA = "Hello world!"
print(stringA)

//String實例化
var stringB = String("Hello world!")
print(stringB)

以上程序執行輸出結果為:

Hello world!
Hello world!

2.空字符串

你可以使用空的字符串字面量賦值給變量或初始化一個String類的實例來初始值一個空的字符串。我們可以使用字符串屬性isEmpty來判斷字符串是否為空:

//使用字符串字面量創建空字符串
var stringA = ""
if stringA.isEmpty {
    print("StringA 是空的")
} else {
    print("StringB 不是空的")
}

//實例化String類來創建空字符串
let stringB = String()
if stringB.isEmpty {
    print("stringB 是空的")
} else {
    print("stringB 不是空的")
}

以上程序的執行輸出結果為:

stringA 是空的
stringB 是空的

3.字符串常量

你可以將一個字符串賦值給一個變量或常量,變量是可修改的,常量是不可修改的。

//stringA 可被修改
var stringA = "Apple"
stringA  += "http://www.apple.com"
print(stringA)

//stringB 不能修改
let stringB = String("Apple")
stringB += "http://www.apple.com"
print(stringB)

以上程序執行輸出結果會報錯,以為stringB為常量是不能被修改的:

error: left side of mutating operator isn't mutable: 'stringB' is a 'let' constant
stringB += "http://www.apple.com"

4.字符串中插入值

字符串插值是一種構建新字符串的方式,可以在其中包含常量、變量、字面量和表達式。您可以插入的字符串字面量的每一項都在以反斜線為前綴的圓括號中:

var varA = 20
let constA = 100
var varC : Float = 20.0
var stringA = "\(varA)乘于\(constA)等于\(varC * 100)"
print(stringA)

以上程序執行輸出結果為:

20乘于100等于2000.0

5.字符串連接

字符串可以通過+號來連接,實例如下:

let constA = “Apple:”
let constB = “http://www.apple.com”
var stringA = constA + constB
print(stringA)

以上程序執行輸出結果為:

Apple:http://www.apple.com

6.字符串長度

字符串長度使用String.characters.count屬性來計算,實例如下:

var varA = "www.apple.com"
print("\(varA),長度為\(varA.characters.count)")

以上程序執行輸出結果為:

www.apple.com

7.字符串比較

你可以通過使用“==”來比較兩個字符串是否相等:

var varA = "Hello Swift!"
var varB = "Hello World"
if varA == varB {
   print("\(varA)與\(varB)是相等的")
} else {
   print("\(varA)與\(varB)是不相等的")
}

以上程序執行輸出結果為:

Hello Swift!與Hello World!是不相等的

8.Unicode字符串

Unicode是一個國際標準,用于文本的編碼,Swift的String類型是基于Unicode建立。你可以循環迭代出字符串中UTF-8與UTF-16的編碼,實例如下:

var unicodeString   = "Apple"
print("UTF-8 編碼: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}

print("\n")
print("UTF-16 編碼: ")
for code in unicodeString.utf16 {
   print("\(code) ")
}

以上程序執行輸出結果為:

UTF-8 編碼: 
232 
143 
156 
233 
184 
159 
230 
149 
153 
231 
168 
139 

UTF-16 編碼: 
33756 
40479 
25945 
31243 

7.字符串函數及運算符

Swift支持一下幾種字符串函數及運算符:

1.isEmpty

判斷字符串是否為空,返回布爾值。

2.hasPrefix(prefix: String)

檢查字符串是否擁有特性的前綴。

3.hasSuffix(suffix:String)

檢查字符串是否擁有特定后綴。

4.Int(Stirng)

轉化字符串數字為整形。
實例:

let myString : String = "233"
let myInt :Int? = Int(myString)
5.String.characters.count

計算字符串的長度。

6.utf8

你可以通過遍歷String的uft8屬性來訪問他的UTF-8編碼。

7.utf16

你可以通過遍歷String的utf8屬性來訪問它的UTF-16編碼。

8.unicodeScalars

你可以通過遍歷String值的unicodeScalar屬性來訪問他的Unicode標量編碼。

9.+

連接兩個字符串,并返回一個新的字符串。

10.+=

連接操作符兩邊的字符串并將新字符串賦值給左邊的操作符變量。

11.==

判斷兩個字符串是否相等。

12.<

比較兩個字符串,對兩個字符串的字母逐一比較。

13.!=

比較兩個字符串是否不相等。

二.字符

Swift的字符是一個單一的字符字符串字面量,數據類型為Character。
以下實例列出了兩個字符實例:

let char1 : Character = "A"
let char2 : Character = “B”
print("char1的值為\(char1)")
print("char2的值為\(char2)")

以上程序執行的結果為:

char1 的值為A
char2 的值為B

如果你想在Character(字符)類型的常量中存儲更多的字符,則程序執行會報錯,如下所示:

let char : Character = "AB"
print("Value of char \(char)")

以上程序執行結果為:

error: cannot convert value of type 'String' to specified type 'Character'
let char: Character = "AB"

1.空字符變量

Swift中不能創建空的Character(字符)類型變量或常量。

//Swift中以下賦值會報錯
let char1 : Character = ""
let char2 : Character = ""
print("char1 的值為\(char1)")
print("char2 的值為\(char2)")

以上程序的執行結果為:

error: cannot convert value of type 'String' to specified type 'Character'
let char1: Character = ""
                   ^~
error: cannot convert value of type 'String' to specified type 'Character'
var char2: Character = ""

2.遍歷字符串中的字符

Swift的Sting類型表示特定序列的Character(字符)類型值的集合。每一個字符值代表一個Unicode字符。您可以通過for-in循環來遍歷字符串中的characters屬性來獲取每一個字符的值:

for ch in “Apple”.character {
    print(ch)
}

以上程序執行輸出結果為:

A
P
P
L
E

3.字符串連接字符

一下實例演示了使用String的Append(方法)來實現字符串連接字符:

var varA : String = "Hello "
let varB : Character = "a"
varA.append(varB)
print("varC = \(varA)")

以上程序執行輸出結果為:

varC = Hello G
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,855評論 1 10
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,806評論 18 139
  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,350評論 1 27
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,726評論 18 399
  • 1、一天sql語句就是一條事物默認開啟默認提交2、可以顯示的開啟事務、回滾事物、提交事務2.1、開啟事務 star...
    zhao1zhihui閱讀 228評論 0 0