Swift — 字符串(String)

在 Swift 中,String 是一种用于操作和表示文本的强大数据类型。它是 Unicode 兼容的,可存储和操作多种语言文字,并且提供了丰富的接口(方法和属性)来进行字符串操作。以下是 Swift String 的常用接口和功能分类介绍。


1. String 的基本属性与信息 #

属性或方法功能说明示例
isEmpty判断字符串是否为空,返回 truefalselet isEmpty = str.isEmpty
count返回字符串中字符的数量(按字符计算,而非字节)。let length = str.count
first返回字符串的第一个字符(可选类型,空字符串返回 nil)。let firstChar = str.first
last返回字符串的最后一个字符(可选类型,空字符串返回 nil)。let lastChar = str.last
lowercased()返回字符串的小写版本。let lower = str.lowercased()
uppercased()返回字符串的大写版本。let upper = str.uppercased()
capitalized返回首字母大写、其余小写的字符串版本。let capitalized = str.capitalized

2. 创建 String #

方式功能说明示例
字面量方式使用双引号直接创建字符串。let str = "Hello World"
空字符串使用 ""String() 创建空字符串。let empty = ""
多行字符串使用三对双引号创建多行字符串。`let multiline = """
Line1
Line2
“”"`

3. 访问 #

方法或特性功能说明示例
subscript(_:)使用下标访问或获取字符串中指定位置的字符(按索引)。let char = str[str.index(str.startIndex, offsetBy: 5)]
startIndex获取字符串的起始索引。let start = str.startIndex
endIndex获取字符串的结束索引,表示最后一个字符的后一个位置。let end = str.endIndex
indices获取字符串中所有字符的索引集合。for index in str.indices { print(str[index]) }

4. 搜索和判断 #

方法功能说明示例
contains(_:)判断字符串是否包含指定字符或子字符串。let isFound = str.contains("Hello")
starts(with:)检查字符串是否以指定子字符串开头,返回 truefalselet starts = str.starts(with: "Hello")
ends(with:)检查字符串是否以指定子字符串结尾,返回 truefalselet ends = str.hasSuffix("World")
firstIndex(of:)返回指定字符的第一个匹配的索引位置(可选类型,当不存在时为 nil)。let index = str.firstIndex(of: "o")
lastIndex(of:)返回字符的最后一个匹配的索引位置(可选类型)。let index = str.lastIndex(of: "o")

5. 修改 #

方法功能说明示例
append(_:)向字符串末尾追加字符或另一个字符串。str.append("Swift")
insert(_:at:)在指定索引位置插入字符或字符串。str.insert("!", at: str.endIndex)
remove(at:)移除指定索引位置的字符,并返回被删除的字符。let removedChar = str.remove(at: str.startIndex)
removeAll()移除字符串中的所有字符,变成一个空字符串。str.removeAll()
replaceSubrange(_:with:)替换指定索引范围内的字符串内容。str.replaceSubrange(str.startIndex..<str.index(str.startIndex, offsetBy: 5), with: "Hello!")

6. 遍历 #

方法功能说明示例
for-in遍历字符串中的每个字符。for char in str { print(char) }
forEach(_:)使用闭包依次遍历每个字符。str.forEach { print($0) }

7. 拼接与组合 #

方法功能说明示例
+使用加号拼接多个字符串,生成一个新字符串。let result = "Hello" + " World"
+ =将右侧字符串拼接到左侧字符串中,直接修改左侧字符串。str += "!"
joined(separator:)用指定的分隔符将字符串数组拼接成一个字符串。let result = ["A", "B", "C"].joined(separator: "-")

8. 截取 (Substrings) #

方法功能说明示例
prefix(_:)返回字符串中从开头到指定长度的部分字符串。let prefix = str.prefix(5)
suffix(_:)返回字符串中从结尾开始指定长度的部分字符串。let suffix = str.suffix(3)
dropFirst(_:)去掉字符串的前 N 个字符,返回剩余部分。let result = str.dropFirst(2)
dropLast(_:)去掉字符串的最后 N 个字符,返回剩余部分。let result = str.dropLast(1)
substring(with:)根据索引范围截取字符串的一部分。let sub = str[str.startIndex..<str.endIndex]

9. 替换 #

方法功能说明示例
replacingOccurrences(of:with:)替换字符串中指定的所有子字符串为新的内容。let newStr = str.replacingOccurrences(of: "World", with: "Swift")
replacingCharacters(in:with:)替换字符串中指定索引范围内的字符为新的内容。str = str.replacingCharacters(in: str.startIndex..<str.index(str.startIndex, offsetBy: 5), with: "Hi")

10. 字符串与其他类型的转换 #

方法功能说明示例
Int(_:)将字符串转换为整型,如果不能转换则为 nillet num = Int("123") // 123
Double(_:)将字符串转换为浮点数,如果不能转换则为 nillet value = Double("3.14") // 3.14
description获取字符串的文本描述。let desc = str.description

11. 大小写变换 #

方法功能说明示例
lowercased()转为小写形式。let lower = str.lowercased()
uppercased()转为大写形式。let upper = str.uppercased()
capitalized转为每个单词首字母大写的形式。let title = str.capitalized

12. 注意事项 (Unicode 和字符处理) #

  1. 字符串是 Unicode-aware 的:
    Swift 的字符串完全支持 Unicode 标准,对于包含多种语言的文本可以安全地存储和操作。

  2. 字符和索引:

    • Swift 的字符串使用 索引 (String.Index) 代替简单整数来访问字符,这是因为字符串的字符可以是多个字节宽度的。
    • 你必须通过 startIndexendIndex 配合 index 方法获取指定位置的字符。
  3. 不可变性:
    Swift 中的字符串是值类型,每次修改字符串都会生成新的值。


示例代码 #

1. 遍历字符串并截取 #

let str = "Hello, Swift"

for char in str {
    print(char) // 输出:依次打印每个字符
}

// 截取前 5 个字符
let prefix = str.prefix(5) // "Hello"

2. 字符串替换 #

var str = "Hello, World"
str = str.replacingOccurrences(of: "World", with: "Swift") // "Hello, Swift"

3. 检查字符串是否包含内容 #

let str = "Learn Swift"
if str.contains("Swift") {
    print("String contains 'Swift'")
}

if str.starts(with: "Learn") {
    print("Starts with 'Learn'")
}

4. 拼接多个字符串 #

let part1 = "I love"
let part2 = " Swift"
let sentence = part1 + part2 // "I love Swift"

5. 获取字符串长度 #

let str = "Hello"
let length = str.count // 输出:5

总结 #

常用功能: #

  1. 创建与访问: 字符串可以通过索引访问字符,支持 startIndexendIndex
  2. 修改: 支持插入、删除、替换、追加等操作。
  3. 查找: containsfirstIndex(of:)starts(with:)
  4. 拼接: +appendjoined
  5. 转换: 支持与 IntDouble 等类型的转换。

适用场景: #

Swift 的 String 适用于所有文本操作需求。如果需要处理字符串或解析文本,String 提供了丰富强大的工具和功能。

本文共 1829 字,上次修改于 Jan 1, 2025