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()

返回字符串的反转。

广告