Swift - 字串



Swift 中的字串是有序的字元集合,例如“Hello, World!”,它們由 Swift 資料型別 String 表示,而 String 又表示字元值的集合。或者我們可以說,字串用於表示文字資訊。

在 Swift 中建立字串

在 Swift 中,我們可以透過兩種不同的方式建立字串,要麼使用字串字面量,要麼建立 String 類的例項。

語法

以下是字串的語法:

// Using String literal
var str = "Hello"
var str : String = "Hello" 

// Using String class
var str = String("Hello")

示例

Swift 程式演示如何建立字串。

import Foundation

// Creating string using String literal
var stringA = "Hello, Swift!"
print(stringA)

// Creating string by specifying String data type
var stringB : String = "Hello, Swift!"
print(stringB)

// Creating string using String instance
var stringC = String("Hello, Swift!")
print(stringC)

輸出

Hello, Swift!
Hello, Swift!
Hello, Swift!

Swift 中的空字串

空字串是不包含任何內容的字串。它由不包含任何字元的雙引號表示。它通常用於在字串變數動態接收值之前初始化它們。我們可以透過使用空字串字面量或建立 String 類的例項來建立空字串。

語法

以下是空字串的語法:

// Using String literal
var str = ""
var str : String = "" 

// Using String class
var str = String("")

示例

Swift 程式演示如何建立空字串。

import Foundation

// Creating empty string using String literal
var stringA = ""

// Creating empty string by specifying String data type
var stringB : String = ""

// Creating string using String instance
var stringC = String("")

// Appending values to the empty strings
stringA = "Hello"
stringB = "Swift"
stringC = "Blue"

print(stringA)
print(stringB)
print(stringC)

輸出

Hello
Swift
Blue

使用 isEmpty 屬性

我們還可以使用布林屬性isEmpty檢查字串是否為空。如果指定的字串為空,則它將返回 true。或者如果指定的字串包含某些字母,則它將返回 false。

示例

Swift 程式檢查給定字串是否為空字串。

import Foundation

// Creating empty string using String literal
var stringA = ""

if stringA.isEmpty {
   print( "stringA is empty" )
} else {
   print( "stringA is not empty" )
}

// Creating string
let stringB = "Tutorialspoint"

if stringB.isEmpty {
   print( "stringB is empty" )
} else {
   print( "stringB is not empty" )
}

輸出

stringA is empty
stringB is not empty

Swift 中的字串可變性

根據字串在聲明後是否可以更改其值,我們可以將其分為兩種型別。

  • 可變字串:可變字串是指其值在建立後可以動態更改的字串。可變字串使用var關鍵字建立。

  • 不可變字串:不可變字串是指其值在建立後不能更改的字串,如果我們嘗試更改其值,我們將收到錯誤。如果我們想修改不可變字串,則必須使用修改後的更改建立一個新字串。不可變字串使用 let 關鍵字建立。

可變字串示例

Swift 程式建立可變字串。

import Foundation

// stringA can be modified
var stringA = "Hello, Swift 4!"
stringA += "--Readers--"
print(stringA)

輸出

Hello, Swift 4!--Readers--

不可變字串示例

Swift 程式建立不可變字串。

import Foundation

// stringB can not be modified
let stringB = String("Hello, Swift 4!")
stringB += "--Readers--"
print(stringB)

輸出

main.swift:5:9: error: left side of mutating operator isn't mutable: 'stringB' is a 'let' constant
stringB += "--Readers--"
~~~~~~~ ^
main.swift:4:1: note: change 'let' to 'var' to make it mutable
let stringB = String("Hello, Swift 4!")
^~~
var

Swift 中的字串插值

字串插值是一種強大而便捷的技術,可以透過在字串字面量中包含常量、變數、字面量和表示式的值來動態建立新字串。我們要插入到字串字面量中的每個專案(變數或常量或表示式)都必須用括號括起來,並在前面加上反斜槓(\)

語法

以下是字串插值的語法:

let city = "Delhi"
var str = "I love \(city)"

示例

Swift 字串插值程式。

import Foundation

var varA   = 20
let constA = 100
var varC : Float = 20.0

// String interpolation
var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"

print(stringA)

輸出

20 times 100 is equal to 2000.0

Swift 中的字串連線

字串連線是將兩個或多個字串組合成單個字串的方法。我們可以使用+ 運算子連線兩個字串或一個字串和一個字元,或兩個字元。

語法

以下是字串連線的語法:

var str = str1 + str2

示例

Swift 字串連線程式。

import Foundation

let strA = "Hello,"
let strB = "Learn"
let strC = "Swift!"

// Concatenating three strings
var concatStr = strA + strB + strC

print(concatStr)

輸出

Hello,LearnSwift!

Swift 中的字串長度

Swift 字串沒有長度屬性,但我們可以使用count屬性計算字串中字元的數量。

示例

Swift 程式計算字串的長度。

import Foundation

let myStr = "Welcome to TutorialsPoint"

// Count the length of the string
let length = myStr.count

print("String length: \(length)")

輸出

String length: 25

Swift 中的字串比較

我們可以使用“== 運算子”比較兩個字串變數或常量。此運算子返回布林值。如果給定的字串相等,則它將返回 true。否則,它將返回 false。

示例

Swift 程式檢查給定的字串是否相等。

import Foundation

var varA   = "Hello, Swift 4!"
var varB   = "Hello, World!"

// Checking whether the given string is equal or not
if varA == varB {
   print( "\(varA) and \(varB) are equal" )
} else {
   print( "\(varA) and \(varB) are not equal" )
}

輸出

Hello, Swift 4! and Hello, World! are not equal

Swift 中的字串迭代

字串迭代用於遍歷指定字串的每個字元,並可以對訪問的資訊執行操作。我們可以使用 for-in 迴圈遍歷給定字串。

示例

import Foundation
var str = "ThisString"
for s in str {
   print(s, terminator: " ")
}

輸出

T h i s S t r i n g

我們還可以將enumerated()函式與 for-in 迴圈一起使用以獲取字元及其各自的索引。

示例

import Foundation

var str = "ThisString"
for (index, value) in str.enumerated() {
   print("\(index) = \(value)")
}

輸出

0 = T
1 = h
2 = i
3 = s
4 = S
5 = t
6 = r
7 = i
8 = n
9 = g

Swift 中的 Unicode 字串

Unicode 是表示不同書寫系統中文字的標準方法。或者我們可以說,它用於表示各種字元和符號。以下是 Unicode 的一些要點:

  • 字元表示 - 字串中存在的所有字元都具有 Unicode 標量值。它是一個 21 位唯一數字,表示一個字元。來自各種語言的所有型別的字元和符號都具有 Unicode 標量值。

  • 擴充套件圖文叢集 - 擴充套件圖文叢集用於表示人類可讀的字元。它可以是一個或多個表示單個字元的 Unicode 標量的集合。

  • Unicode 標量 - 透過 Unicode 標量屬性,我們可以輕鬆訪問給定字元的 Unicode 標量值。

  • 使用 Unicode 進行字串比較 - 在比較兩個字串時,Swift 會自動執行符合 Unicode 的比較。它確保根據字串的語言含義而不是其二進位制值進行比較。

示例

Swift 程式透過迭代其utf8utf16屬性來訪問字串的UTF-8UTF-16表示,如下例所示:

import Foundation

var unicodeString   = "Dog‼🐶"
print("UTF-8 Codes: ")
for code in unicodeString.utf8 {
   print("\(code) ")
}
print("\n")

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

輸出

UTF-8 Codes: 
68 
111 
103 
226 
128 
188 
240 
159 
144 
182
UTF-16 Codes: 
68 
111 
103 
8252 
55357 
56374 

Swift 中的字串函式和運算子

Swift 支援各種與字串相關的函式和運算子:

序號 函式/運算子和用途
1

isEmpty

一個布林值,用於確定字串是否為空。

2

hasPrefix(prefix: String)

函式檢查給定引數字串是否作為字串的字首存在。

3

hasSuffix(suffix: String)

函式檢查給定引數字串是否作為字串的字首存在。

4

toInt()

函式將數字字串值轉換為整數。

5

count()

全域性函式計算字串中字元的數量。

6

utf8

屬性返回字串的 UTF-8 表示形式。

7

utf16

屬性返回字串的 UTF-16 表示形式。

8

unicodeScalars

屬性返回字串的 Unicode 標量表示形式。

9

+

運算子連線兩個字串,或一個字串和一個字元,或兩個字元。

10

+=

運算子將字串或字元附加到現有字串。

11

==

運算子確定兩個字串是否相等。

12

<

運算子執行詞法比較以確定一個字串是否小於另一個字串。

13

==

運算子確定兩個字串是否相等。

14

startIndex

獲取字串起始索引處的值。

15

endIndex

獲取字串結束索引處的值。

16

Indices

逐個訪問索引。即字串的所有字元一個接一個。

17

insert("Value", at: position)

在指定位置插入值。

18

remove(at: position)

removeSubrange(range)

刪除指定位置的值,或從字串中刪除一系列值。

19

reversed()

返回字串的反轉。

廣告