在本教程中,您將學(xué)習(xí)Swift中的字符和字符串用法。您還將學(xué)習(xí)可以對字符串和字符執(zhí)行的不同操作。
字符是單個(gè)符號(hào)(字母,數(shù)字等)。swift中的字符是Character類型,聲明為:
let someCharacter:Character
您可以使用雙引號(hào)“”指定與字符串相同的字符類型的值,但在引號(hào)“”內(nèi)只能包含一個(gè)字符。
如果需要包含多個(gè)字符,則需要定義為String類型而不是Character。
let someCharacter:Character = “H” let specialCharacter:Character = “@” print(someCharacter) print(specialCharacter)
運(yùn)行該程序時(shí),輸出為:
H @
但是,如果您嘗試在字符內(nèi)分配兩個(gè)符號(hào)為
/* 這將給出一個(gè)錯(cuò)誤。 將類型更改為字符串可以修復(fù)該問題。 */ let failableCharacter:Character = "H@" print(failableCharacter)
當(dāng)您嘗試運(yùn)行上面的代碼時(shí),您將收到以下錯(cuò)誤消息:
Cannot convert value of type String to Character.(無法將字符串類型的值轉(zhuǎn)換為字符。)
您也可以使用unicodes為 emoji表情符號(hào)創(chuàng)建特殊類型的字符。您可以使用轉(zhuǎn)義序列\(zhòng)u {n}創(chuàng)建unicode(unicode代碼點(diǎn),n為十六進(jìn)制)。
let heartShape:Character = "\u{2665}" print(heartShape)
運(yùn)行該程序時(shí),輸出為:
?
在上面的示例中,從代碼U + 2665創(chuàng)建了一個(gè)心形字符。 盡管\u {2665}包含在雙引號(hào)中,但是編譯器不會(huì)將其視為String,因?yàn)槲覀兪褂昧宿D(zhuǎn)義序列\(zhòng)u {n}。 包含在文字中的轉(zhuǎn)義序列并不代表自身。
字符串只是字符的集合。Swift中的字符串是String類型,并聲明為:
let someString:String
您可以使用字符串字面量以String類型分配值。字符串文字是用雙引號(hào)" ",引起來的字符的集合。
let someString:String = "Hello, world!" let someMessage = "I love Swift." print(someString) print(someMessage)
運(yùn)行該程序時(shí),輸出為:
Hello, world! I love Swift.
在這里,“ Hello,world! ”和“ i love Swift. ”分別是用于創(chuàng)建字符串變量 someString 和 someMessage 的字符串。
String中有一些內(nèi)置的函數(shù)和屬性來處理最常用的操作。例如:要連接字符串,請將其更改為大寫或大寫。讓我們在下面探討一些常用的操作:
您可以使用比較運(yùn)算符 (==)簡單地檢查兩個(gè)字符串是否相等。如果兩個(gè)字符串相等,則運(yùn)算符返回true ,否則返回false。
示例5:Swift中的字符串比較
let someString = "Hello, world!" let someMessage = "I love Swift." let someAnotherMessage = "Hello, world!" print(someString == someMessage) print(someString == someAnotherMessage)
運(yùn)行該程序時(shí),輸出為:
false true
可以使用加法運(yùn)算符 (+)或使用復(fù)合賦值運(yùn)算符 (+=)將兩個(gè)不同的字符串值相加。您也可以使用append方法在字符串中附加一個(gè)字符/字符串。
示例6:Swift中的字符串連接
let helloStr = "Hello, " let worldStr = "World" var result = helloStr + worldStr print(result) result.append("!") print(result)
運(yùn)行該程序時(shí),輸出為:
Hello, World Hello, World!
在上面的程序中,我們通過附加并使用+運(yùn)算符創(chuàng)建了一個(gè)字符串 result。因此 helloStrworldStrprint(result),在屏幕上輸出Hello,World。
您也可以使用append方法附加任何字符或字符串。result.append("!") 在字符串末尾附加一個(gè)!字符。因此print(result),在屏幕上輸出Hello,World!。
使用高級賦值運(yùn)算符的字符串連接
我們還可以使用高級賦值運(yùn)算符(+ =)拼接字符串。
示例7:使用+ =運(yùn)算符的字符串連接
var helloStr = "Hello, " let worldStr = "World!" helloStr += worldStr print(helloStr)
運(yùn)行該程序時(shí),輸出為:
Hello, World!
注意在 helloStr 中使用了 var 而不是 let。如果您已經(jīng)使用 let 定義了 helloStr 常量,那么以后不能使用 += 運(yùn)算符更改它,并最終得到一個(gè)錯(cuò)誤。因此,您必須定義 helloStr 變量。
這是一個(gè)簡單的過程,一個(gè)字符串字面量,包括變量,常量等。假設(shè)你有一個(gè)玩家的名字和得分存儲(chǔ)在兩個(gè)常量中,如下:
let playerName = "Jack" let playerScore = 99
現(xiàn)在,您需要向玩家顯示一條消息,“恭喜Jack!您的最高分是99。” 在這里,您需要一種在單個(gè)字符串中使用常量值的方法。
這可以通過使用字符串串聯(lián)來實(shí)現(xiàn):
let congratsMessage = "恭喜 " + playerName + "!. 您的最高分是 " + playerScore + "." print(congratsMessage)
但是,以上方式可讀性比較差。
所以,有一種使用字符串插值顯示消息的簡便方法。插值是在字符串文字中包含變量或常量的值的過程。
應(yīng)該插入字符串字面量中的變量或常量用一對括號(hào)括起來( ),并以反斜杠為前綴(\)。
let playerName = "Jack" let playerScore = 99 let congratsMessage = "恭喜\(playerName)!. 您的最高分是 \(playerScore)." print(congratsMessage)
運(yùn)行該程序時(shí),輸出為:
恭喜 Jack!. 您的最高分是 99.
此函數(shù)確定字符串是否為空。它返回true,如果字符串為空,否則返回false。
var emptyString = "" print(emptyString.isEmpty)
運(yùn)行該程序時(shí),輸出為:
true
此屬性用于大寫字符串中的每個(gè)單詞。
let someString = "hello, world!" print(someString.capitalized)
運(yùn)行該程序時(shí),輸出為:
Hello, World!
大寫函數(shù)將字符串轉(zhuǎn)換為大寫字母,小寫函數(shù)將字符串轉(zhuǎn)換為小寫字母。
let someString = "Hello, World!" print(someString.uppercased()) print(someString.lowercased())
運(yùn)行該程序時(shí),輸出為:
HELLO, WORLD! hello, world!
此屬性用于計(jì)算字符串中的字符總數(shù)。
let someString = "Hello, World!" print(someString.count)
運(yùn)行該程序時(shí),輸出為:
13
此函數(shù)確定字符串是否以特定字符開頭,并返回一個(gè)布爾值。如果字符串前綴與提供的值匹配,則返回 true,否則返回 false。
let someString = "Hello, World!" print(someString.hasPrefix("Hell")) print(someString.hasPrefix("hell"))
運(yùn)行該程序時(shí),輸出為:
true false
此函數(shù)確定字符串是否以特定字符結(jié)尾,并返回一個(gè)布爾值。如果字符串后綴與提供的值匹配,則返回 true,否則返回 false。
print(someString.hasSuffix("rld!")) print(someString.hasSuffix("Rld!"))
運(yùn)行該程序時(shí),輸出為:
true false