Swift Academy · 课时

替换与拆分文本

使用正则表达式操作转换字符串。

第 4 / 4 课13 个步骤

替换与拆分文本 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

替换与拆分

正则表达式不仅用于匹配。Swift 字符串可以替换匹配到的文本,也可以根据模式拆分字符串,无需手动循环即可转换字符串。

replacing(_:with:)

replacing(_:with:) 会返回一个新字符串,其中模式的每个匹配项都被替换文本替换。

let s = "a1b2c3"
let cleaned = s.replacing(/\d/, with: "*")
print(cleaned)

替换完整单词

模式可以是任意正则表达式,因此您可以一次性使用单个替换文本替换所有连续的数字。

let s = "order 1234 done"
let masked = s.replacing(/\d+/, with: "#")
print(masked)

使用替换进行原地修改

replace(_:with:) 会直接修改一个 var 字符串,而不是返回副本。

var text = "hello world"
text.replace(/o/, with: "0")
print(text)

使用闭包进行替换

replacing(_:with:) 的闭包形式会接收每个匹配结果并返回替换内容,从而支持计算替换内容。

let s = "a1 b2 c3"
let result = s.replacing(/\d+/) { match in
    String((Int(match.0) ?? 0) * 10)
}
print(result)

在替换中使用捕获结果

在闭包中,您可以读取匹配结果中的捕获组,以构建替换文本。

let s = "2024-05"
let out = s.replacing(/(\d+)-(\d+)/) { m in
    "\(m.2)/\(m.1)"
}
print(out)

split(separator:)

字符串支持将正则表达式传给 split(separator:),在模式匹配到的位置拆分字符串。

let csv = "a,b;c,d"
let parts = csv.split(separator: /[,;]/)
print(parts)

按空白字符拆分

一个常见任务是:使用 /\s+/,根据任意连续的空白字符将字符串拆分为多个单词。

let line = "the   quick  brown"
let words = line.split(separator: /\s+/)
print(words.count)
print(words)

限制拆分次数

maxSplits 参数会限制拆分次数,并保留剩余部分不变。

let s = "a-b-c-d"
let parts = s.split(separator: /-/, maxSplits: 1)
print(parts)

修剪与替换

组合使用多个操作:先替换不需要的模式,再进行拆分,从而在处理流水线中清理并标记化输入。

let raw = "  one,, two ,,three "
let cleaned = raw.replacing(/,+/, with: ",")
let items = cleaned.split(separator: ",").map { $0.trimmingCharacters(in: .whitespaces) }
print(items)

replacing 与 replacingOccurrences

正则表达式版本的 replacing 作用于模式;较旧的 replacingOccurrences(of:with:) 只能处理字面子字符串。对于基于模式的编辑,请优先使用正则表达式版本。

let s = "cat hat bat"
print(s.replacing(/[ch]at/, with: "X"))

快速检查

"a1b2".replacing(/\d/, with: "-") 会生成什么结果?

回顾

您可以使用 replacing(_:with:)(字符串形式或闭包形式)和原地 replace 来替换匹配结果,也可以使用 split(separator:) 和 maxSplits 根据正则表达式拆分字符串。这些功能将正则表达式变成了完整的文本转换工具集。

免费开始

用 AI 导师学习 Swift — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
122
课程
409

常见问题解答

「替换与拆分文本」课时是免费的吗?

是的 — 「替换与拆分文本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「替换与拆分文本」这节课中我会学到什么?

使用正则表达式操作转换字符串。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「替换与拆分文本」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 正则表达式字面量与匹配
  2. 捕获组
  3. RegexBuilder DSL
  4. 替换与拆分文本
← 返回 Swift Academy