Swift 字符串

Swift 字符串是一系列字符的集合。例如 "Hello, World!" 這樣的有序的字符類型的值的集合,它的數(shù)據(jù)類型為 String。

創(chuàng)建字符串

你可以通過使用字符串字面量或 String 類的實(shí)例來創(chuàng)建一個(gè)字符串:

import Cocoa

// 使用字符串字面量

var stringA = "Hello, World!"

print( stringA )

// String 實(shí)例化

var stringB = String("Hello, World!")

print( stringB )

以上程序執(zhí)行輸出結(jié)果為:

Hello, World!

Hello, World!

空字符串

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

import Cocoa

// 使用字符串字面量創(chuàng)建空字符串

var stringA = ""

if stringA.isEmpty {

print( "stringA 是空的" )

} else {

print( "stringA 不是空的" )

}

// 實(shí)例化 String 類來創(chuàng)建空字符串

let stringB = String()

if stringB.isEmpty {

print( "stringB 是空的" )

} else {

print( "stringB 不是空的" )

}

以上程序執(zhí)行輸出結(jié)果為:

stringA 是空的

stringB 是空的

字符串常量

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

import Cocoa

// stringA 可被修改

var stringA = "菜鳥教程:"

stringA += "http://www.runoob.com"

print( stringA )

// stringB 不能修改

let stringB = String("菜鳥教程:")

stringB += "http://www.runoob.com"

print( stringB )

以上程序執(zhí)行輸出結(jié)果會(huì)報(bào)錯(cuò),以為 stringB 為常量是不能被修改的:

error: left side of mutating operator isn't mutable: 'stringB' is a 'let' constant

stringB += "http://www.runoob.com"

字符串中插入值

字符串插值是一種構(gòu)建新字符串的方式,可以在其中包含常量、變量、字面量和表達(dá)式。 您插入的字符串字面量的每一項(xiàng)都在以反斜線為前綴的圓括號(hào)中:

import Cocoa

var varA? = 20

let constA = 100

var varC:Float = 20.0

var stringA = "\(varA) 乘于 \(constA) 等于 \(varC * 100)"

print( stringA )

以上程序執(zhí)行輸出結(jié)果為:

20 乘于 100 等于 2000.0

字符串連接

字符串可以通過 + 號(hào)來連接,實(shí)例如下:

import Cocoa

let constA = "菜鳥教程:"

let constB = "http://www.runoob.com"

var stringA = constA + constB

print( stringA )

以上程序執(zhí)行輸出結(jié)果為:

菜鳥教程:http://www.runoob.com

字符串長度

字符串長度使用 String.characters.count 屬性來計(jì)算,實(shí)例如下:

import Cocoa

var varA? = "www.runoob.com"

print( "\(varA), 長度為 \(varA.characters.count)" )

以上程序執(zhí)行輸出結(jié)果為:

www.runoob.com, 長度為 14

字符串比較

你可以使用 == 來比較兩個(gè)字符串是否相等:

import Cocoa

var varA? = "Hello, Swift!"

var varB? = "Hello, World!"

if varA == varB {

print( "\(varA) 與 \(varB) 是相等的" )

} else {

print( "\(varA) 與 \(varB) 是不相等的" )

}

以上程序執(zhí)行輸出結(jié)果為:

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

Unicode 字符串

Unicode 是一個(gè)國際標(biāo)準(zhǔn),用于文本的編碼,Swift 的 String 類型是基于 Unicode建立的。你可以循環(huán)迭代出字符串中 UTF-8 與 UTF-16 的編碼,實(shí)例如下:

import Cocoa

var unicodeString? = "菜鳥教程"

print("UTF-8 編碼: ")

for code in unicodeString.utf8 {

print("\(code) ")

}

print("\n")

print("UTF-16 編碼: ")

for code in unicodeString.utf16 {

print("\(code) ")

}

以上程序執(zhí)行輸出結(jié)果為:

UTF-8 編碼:

232

143

156

233

184

159

230

149

153

231

168

139

UTF-16 編碼:

33756

40479

25945

31243

字符串函數(shù)及運(yùn)算符

Swift 支持以下幾種字符串函數(shù)及運(yùn)算符:

序號(hào) 函數(shù)/運(yùn)算符 & 描述

1

isEmpty

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

2

hasPrefix(prefix: String)

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

3

hasSuffix(suffix: String)

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

4

Int(String)

轉(zhuǎn)換字符串?dāng)?shù)字為整型。 實(shí)例:

let myString: String = "256"

let myInt: Int? = Int(myString)

5

String.characters.count

計(jì)算字符串的長度

6

utf8

您可以通過遍歷 String 的 utf8 屬性來訪問它的 UTF-8 編碼

7

utf16

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

8

unicodeScalars

您可以通過遍歷String值的unicodeScalars屬性來訪問它的 Unicode 標(biāo)量編碼.

9

+

連接兩個(gè)字符串,并返回一個(gè)新的字符串

10

+=

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

11

==

判斷兩個(gè)字符串是否相等

12

<

比較兩個(gè)字符串,對兩個(gè)字符串的字母逐一比較。

13

!=

比較兩個(gè)字符串?是否不相等。

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

推薦閱讀更多精彩內(nèi)容

  • 一個(gè)字符串 是一系列字符的集合,例如hello, world和albatross。Swift的字符串是String...
    BoomLee閱讀 2,412評(píng)論 0 3
  • String是例如"hello, world","albatross"這樣的有序的Character(字符)類型的...
    窮人家的孩紙閱讀 860評(píng)論 2 1
  • 特性: 1. Unicode 編碼規(guī)范: 可以使用任何字符,表情 2. 與本地語言無關(guān):無需去考慮漢子及其他字體亂...
    a7a5046b89c8閱讀 453評(píng)論 0 0
  • 字符串 字符串在任何的開發(fā)中使用都是非常頻繁的 OC和Swift中字符串的區(qū)別 1. 在OC中字符串類型時(shí)NSS...
    哆啦_閱讀 1,629評(píng)論 0 0
  • 學(xué)習(xí)書法已經(jīng)是第三周,本周為了更好的學(xué)習(xí)好書法,白天做好家務(wù)照顧好小寶,晚上要先生幫忙帶小寶,給我兩小時(shí)的學(xué)...
    伏羲媽媽葉泰君閱讀 329評(píng)論 0 1