首页 / Swift 编程语言教程 / 字符串操作

Swift 编程语言教程

字符串操作

本教程共 93 篇 · 第 15 篇 · 更新于 2026-08-08 · 约 8 分钟阅读

SwiftSwift 编程语言教程字符串操作拼接插值多行字符串特殊字符

本节目标:读完你能熟练拼接字符串、用插值嵌入变量、写多行字符串,并知道常见特殊字符怎么表示。

字符串是日常打交道最多的类型之一。这一章聚焦最实用的几种操作:把字符串连起来、把值塞进字符串、写跨行的长文本、以及表示一些特殊字符。

1-1 用 + 拼接字符串

把两个字符串加起来,就能得到一个新的、连在一起的字符串:

let s1 = "你好"
let s2 = " 世界"
var welcome = s1 + s2
// welcome 现在是 "你好 世界"

+ 在这里做的是字符串连接,和数字的加法是两回事。拼接后得到的是全新字符串,原来的 s1s2 不受影响。

1-2 用 += 追加

如果字符串是变量(var),可以用 += 往尾部追加另一段:

var instruction = "向左看"
instruction += s2
// instruction 现在是 "向左看 世界"

注意:只有 var 声明的可变字符串才能 +=,常量(let)字符串改不了,这点我们在字符串那章讲过。

1-3 用 append 追加单个字符

想给字符串末尾加一个 Character,用 append(_:) 方法:

let exclamation: Character = "!"
welcome.append(exclamation)
// welcome 变成 "你好 世界!"

append 接收的是单个字符。你不能把一个字符串或字符硬塞进一个 Character 变量里,因为 Character 只能装单个字符。

1-4 字符串插值

插值是把常量、变量、字面量甚至表达式,直接嵌进字符串里。写法是把内容包在括号里、前面加反斜杠 \

let multiplier = 3
let message = "\(multiplier) 乘以 2.5 等于 \(Double(multiplier) * 2.5)"
// "3 乘以 2.5 等于 7.5"

\(multiplier) 是个占位符,求值时会替换成实际值。插值里还能写表达式,比如 \(Double(multiplier) * 2.5),整段计算完再塞进去。

插值既可用于单行字符串,也可用于多行字符串,是日常拼文本最顺手的工具。比起用 + 一堆拼接,插值可读性高得多。

1-5 多行字符串字面量

字符串要跨好几行时,用三个双引号 """ 包起来:

let quotation = """
白兔戴上眼镜,问道:
"陛下,我该从哪儿开始?"

"从开头开始,"国王庄重地说,
"一直讲到结尾,然后停。"
"""

多行字符串会包含开头 """ 之后、结尾 """ 之前的全部行。所以下面两段等价,都不会多出首尾的换行:

let single = "这两句相同。"
let multi = """
这两句相同。
"""

1-6 多行里的软换行

源码里想换行让代码好看,但不想让换行进到字符串值里,就在行尾加反斜杠 \

let softWrapped = """
白兔戴上眼镜。  "请问从哪里开始,\
陛下?" 它问。
"""

这样源码分了两行显示,字符串里却仍是同一行(反斜杠处不换行)。想让字符串真正以换行开头或结尾,就在首行或末行留一个空行。

1-7 缩进规则

多行字符串可以缩进对齐周围代码。写在结尾 """ 前面的空白,会告诉 Swift 忽略每行前面同样多的空白。但如果某行比结尾引号缩进得更多,多出来的那部分空白会被保留。

let lines = """
    这一行前有四个空格缩进。
      这一行又多缩了四个,会保留。
"""

理解缩进规则,能让你既把代码排整齐,又不被多余空格污染字符串内容。

1-8 特殊字符怎么写

字符串里有些字符得”转义”才能表示。常见转义字符:\0(空字符)、\\(反斜杠)、\t(制表符)、\n(换行)、\r(回车)、\"(双引号)、\'(单引号)。

let wiseWords = "\"想象力比知识更重要\" - 爱因斯坦"
// 输出带双引号的句子

想表示任意 Unicode 字符,用 \u{十六进制数},比如 \u{24}$\u{2665} 是 ♥、\u{1F496} 是 💖。这让字符串能精确包含任何文字系统的字符。

Tip

多行字符串因为用三个双引号,里面可以直接写单个 " 不用转义。但要写 """ 本身时,至少得转义其中一个引号,比如 \"\"\"

1-9 扩展字符串定界符

如果你想在字符串里原样保留 \n 这种字符、不让它变成换行,可以用扩展定界符:把字符串包在引号里、再在外面套上 #

let raw = #"第一行\n第二行"#
// 打印出来就是 "第一行\n第二行",\n 不被当换行

如果又想在 #"...# 里启用转义,让 # 的数量和转义处匹配即可:#"第1行\#n第2行"# 会换行。这个特性在写正则表达式等需要大量反斜杠的场景很有用。

1-10 拼接之外的事

字符串操作是日常高频动作,把拼接、插值、多行这几样吃透,文本处理基本够用。拼接用 ++=,但只有 var 字符串能 +=,常量改不了。想追单个字符用 append(_:),注意它收的是 Character,不能把字符串硬塞进单字符变量。

字符串插值是把值嵌进字符串的利器,写法是 \(),括号里还能放表达式。比起用 + 一堆拼接,插值可读性高得多,也更能表达”这串文字是怎么拼出来的”。多行字符串用 """ 包裹,缩进规则和转义(\ 软换行、\" 特殊字符、\u{} Unicode)掌握好,长文本就不再是负担。

扩展定界符 #"..."# 能原样保留 \n 这类转义序列,写正则等需要大量反斜杠的场景特别有用。初学用得少,但知道它存在,将来遇到”转义地狱”就知道有解药。

一个实用提醒:拼接大量字符串时,反复用 + 会不断生成新字符串,略有开销。日常小文本无所谓;若真要拼很多段(比如循环里拼长文本),更优雅的方式留到集合高阶操作那章讲。现在先掌握 +、插值、""" 三件套。

特殊字符的转义(\n\t\"\\\u{})建议记个大概,写带格式的文本时就不会卡。尤其 \u{十六进制} 能精确表示任何 Unicode 字符,处理国际化或特殊符号时是刚需。把字符串操作练熟,你几乎能应付所有”文本进出”的场景。遇到不会的细节,查文档比硬背高效——理解原理,剩下的交给搜索。

1-11 补记:多行字符串的缩进坑

再提醒一个书写细节:多行字符串 """ 的结尾引号要单独成行,且它前面的缩进决定了字符串里忽略多少前导空白。很多新手把结尾 """ 缩进得不对,导致字符串开头多出一堆空格。遇到”明明没打空格却有空格”的情况,先检查结尾引号的缩进位置。多行字符串的缩进规则初看别扭,写两次就顺了。

字符串是 Swift 里最常用也最易被”想当然”的类型。把拼接、插值、多行、特殊字符、扩展定界符这五件套练熟,绝大多数文本场景你都能从容应对。

1-12 小结

字符串操作的核心四件事:用 ++= 拼接、append 追加单字符、\() 插值嵌入值(含表达式)、""" 写多行。特殊字符用转义(\n\"\u{}),扩展定界符 #"..."# 可原样保留转义序列。掌握这些,日常文本处理基本够用。下一章我们深入字符串的 Unicode 底层,弄清字符计数的那些”坑”。