Swift 字符和字符串

在本教程中,您將學(xué)習(xí)Swift中的字符和字符串用法。您還將學(xué)習(xí)可以對字符串和字符執(zhí)行的不同操作。

什么是字符?

字符是單個(gè)符號(hào)(字母,數(shù)字等)。swift中的字符是Character類型,聲明為:

let someCharacter:Character

如何在Swift中聲明和賦值字符?

您可以使用雙引號(hào)“”指定與字符串相同的字符類型的值,但在引號(hào)“”內(nèi)只能包含一個(gè)字符。

如果需要包含多個(gè)字符,則需要定義為String類型而不是Character。

示例1:聲明和分配字符

let someCharacter:Character = “H”
let specialCharacter:Character = “@”
print(someCharacter)
print(specialCharacter)

運(yùn)行該程序時(shí),輸出為:

H
@

示例2:分配多個(gè)字符(無效)

但是,如果您嘗試在字符內(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)換為字符。)

使用Unicode和轉(zhuǎn)義序列創(chuàng)建字符

您也可以使用unicodes為 emoji表情符號(hào)創(chuàng)建特殊類型的字符。您可以使用轉(zhuǎn)義序列\(zhòng)u {n}創(chuàng)建unicode(unicode代碼點(diǎn),n為十六進(jìn)制)。

示例3:創(chuàng)建一個(gè)unicode字符

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

如何在Swift中聲明和分配字符串?

您可以使用字符串字面量以String類型分配值。字符串文字是用雙引號(hào)" ",引起來的字符的集合。

示例4:聲明和分配字符串

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

字符串串聯(lián)

可以使用加法運(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)括起來( ),并以反斜杠為前綴(\)。

示例8:Swift中的字符串插值

let playerName = "Jack"
let playerScore = 99
let congratsMessage = "恭喜\(playerName)!. 您的最高分是 \(playerScore)."
print(congratsMessage)

運(yùn)行該程序時(shí),輸出為:

恭喜 Jack!. 您的最高分是 99.

字符串內(nèi)置的函數(shù)和屬性:

1. isEmpty(判斷是否為空)

此函數(shù)確定字符串是否為空。它返回true,如果字符串為空,否則返回false。

示例9:isEmpty

var emptyString = ""
print(emptyString.isEmpty)

運(yùn)行該程序時(shí),輸出為:

true

2.capitalized(單詞大寫)

此屬性用于大寫字符串中的每個(gè)單詞。

示例10:大寫

let someString = "hello, world!"
print(someString.capitalized)

運(yùn)行該程序時(shí),輸出為:

Hello, World!

3.uppercased 和 lowercased(字符串大寫和小寫)

大寫函數(shù)將字符串轉(zhuǎn)換為大寫字母,小寫函數(shù)將字符串轉(zhuǎn)換為小寫字母。

示例11:uppercased()和lowercased()

let someString = "Hello, World!"
print(someString.uppercased())
print(someString.lowercased())

運(yùn)行該程序時(shí),輸出為:

HELLO, WORLD!
hello, world!

4.count (計(jì)數(shù)/長度)

此屬性用于計(jì)算字符串中的字符總數(shù)。

示例12:計(jì)數(shù)

let someString = "Hello, World!"
print(someString.count)

運(yùn)行該程序時(shí),輸出為:

13

5. hasPrefix

此函數(shù)確定字符串是否以特定字符開頭,并返回一個(gè)布爾值。如果字符串前綴與提供的值匹配,則返回 true,否則返回 false。

示例13:hasPrefix()

let someString = "Hello, World!"
print(someString.hasPrefix("Hell"))
print(someString.hasPrefix("hell"))

運(yùn)行該程序時(shí),輸出為:

true
false

6. hasSuffix

此函數(shù)確定字符串是否以特定字符結(jié)尾,并返回一個(gè)布爾值。如果字符串后綴與提供的值匹配,則返回 true,否則返回 false。

示例14:hasSuffix()

print(someString.hasSuffix("rld!"))
print(someString.hasSuffix("Rld!"))

運(yùn)行該程序時(shí),輸出為:

true
false
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清