跳到主要内容

Swift 字符和字符串

提示
  1. Swift字符定义:在Swift中,字符(Character)代表单个字符的字符串,如 "a", "@", "5"。字符变量只能存储单个字符,并且尝试赋值多于一个字符的数据会导致错误。
  2. Swift字符串概念:字符串(String)用于存储文本数据,如 "Hey There!"。Swift可以根据值自动推断字符串类型,因此在声明时不总是需要指定String关键字。
  3. 字符串操作方法:Swift提供多种字符串操作,如使用==比较两个字符串,append()++=运算符拼接字符串,count属性计算长度。还支持转义序列(如\"表示双引号),字符串插值(如\(name))和多行字符串(使用三个双引号""")。

Swift 字符

字符是 数据类型,代表单个字符的字符串(如 "a""@""5" 等)。

我们使用 Character 关键字在 Swift 中创建字符类型变量。例如,

var letter: Character

这里,letter 变量只能存储单个字符数据。

字符示例

// 创建字符变量
var letter: Character = "H"
print(letter) // H

var symbol: Character = "@"
print(symbol) // @

在上面的示例中,我们创建了两个字符变量:lettersymbol。这里,我们分别将 "H" 赋值给 letter,将 "@" 赋值给 symbol

注意: 如果我们尝试将多于一个字符的数据赋值给 Character 变量,将会得到错误。

// 创建字符变量
let test: Character = "H@"

print(test)

// 错误:
// 无法将类型为 'String' 的值转换为指定类型 Character

Swift 字符串

在 Swift 中,字符串用于存储文本数据(如 "Hey There!""Swift is awesome." 等)。

我们使用 String 关键字创建字符串类型变量。例如,

let name: String

这里,name 变量只能存储文本数据。

注意: 由于字符串包含多个字符,因此被称为字符序列。

字符串示例

// 创建字符串类型变量

let name: String = "Swift"
print(name)

let message = "I love Swift."
print(message)

输出

Swift
I love Swift.

在上面的示例中,我们创建了字符串类型变量:namemessage,分别赋值为 "Swift""I love Swift"

注意以下语句,

let message = "I love Swift."

在创建变量时,我们没有使用 String 关键字。这是因为 Swift 能够根据值推断出类型。

注意: 在 Swift 中,我们使用双引号表示字符串和字符。

字符串操作

Swift 中的 String 类提供了各种内置函数,允许我们对字符串执行不同的操作。

1. 比较两个字符串

我们使用 == 运算符来比较两个字符串。如果两个字符串相等,运算符返回 true。否则返回 false。例如,

let str1 = "Hello, world!"
let str2 = "I love Swift."
let str3 = "Hello, world!"

// 比较 str1 和 str2
print(str1 == str2)

// 比较 str1 和 str3
print(str1 == str3)

输出

false
true

在上面的示例中,

  • str1str2 不相等。因此,结果是 false。
  • str1str3 相等。因此,结果是 true。

2. 拼接两个字符串

我们使用 append() 函数在 Swift 中拼接两个字符串。例如,

var greet = "Hello "
var name = "Jack"

// 使用 append() 方法
greet.append(name)
print(greet)

输出

Hello Jack

在上述示例中,我们使用 append() 方法拼接了 namegreet

使用 + 和 += 拼接

我们也可以使用 ++= 运算符来连接两个字符串。

var greet = "Hello, "
let name = "Jack"

// 使用 + 运算符
var result = greet + name
print(result)

// 使用 += 运算符
greet += name
print(greet)

输出

Hello, Jack
Hello, Jack

在上述示例中,我们使用 ++= 运算符连接了两个字符串:greetname

注意: 我们不能使用 let 创建 greet。这是因为 += 运算符将两个字符串拼接,并将新值赋给 greet

3. 查找字符串长度

我们使用 count 属性来查找字符串的长度。例如,

let message = "Hello, World!"

// 计算字符串长度
print(message.count) // 13

注意: count 属性计算字符串中的字符总数,包括空格。

其他内置函数

内置函数描述
isEmpty判断字符串是否为空
capitalized将字符串中每个单词的首字母大写
uppercased()将字符串转换为大写
lowercased()将字符串转换为小写
hasPrefix()判断字符串是否以某些特定字符开头
hasSuffix()判断字符串是否以某些特定字符结尾

转义序列

转义序列用于在字符串中转义某些字符。

假设我们需要在字符串中包含双引号。

// 包含双引号
var example = "这是 \"String\" 类"

print(example) // 不会出错

由于字符串是由双引号表示的,编译器将把 "This is " 当作字符串。因此,上述代码将导致错误。

为了解决这个问题,我们在 Swift 中使用转义字符 \

// 使用转义字符
var example = "这是 \"String\" 类"

print(example)

// 输出:这是 "String" 类

现在程序将不会出现任何错误。在这里,转义字符会告诉编译器忽略 \ 之后的字符。

以下是 Swift 支持的所有转义序列列表。

转义序列字符
\0空字符
\\普通反斜线
\t水平制表符
\n换行符
\"双引号

字符串插值

我们还可以使用反斜线字符 \ 在字符串中使用变量和常量。例如,

let name = "Swift"

var message = "这是 \(name) 编程。"
print(message)

输出

这是 Swift 编程。

在上述示例中,注意这一行

var message = "这是 \(name) 编程。"

这里,我们在字符串 message 中使用了变量 name。这个过程在 Swift 中被称为字符串插值

Swift 多行字符串

我们还可以在 Swift 中创建多行字符串。为此,我们使用三个双引号 """。例如,

// 多行字符串
var str: String = """
Swift 很棒
我爱 Swift
"""

print(str)

输出

Swift 很棒
我爱 Swift

在上述示例中,三个引号之间的任何内容都是一个多行字符串。

注意: 多行字符串必须始终从新的一行开始。否则,它将生成错误。

// 错误代码
var str = """Swift
我爱 Swift
"""

创建字符串实例

我们还可以使用初始化语法创建字符串。例如,

var str = String()

这里,初始化语法 String() 将创建一个空字符串。