0Pricing
Ruby Academy · 课时

替换

使用模式调用 gsub

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

使用 sub 替换文本

String#sub 会将模式的第一个匹配项替换为替换字符串。原字符串不会改变;该方法会返回一个新字符串。

s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts s

使用 gsub 替换全部内容

gsub 表示全局替换。它会替换每一个匹配项,而不仅仅是第一个。

puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))

替换中的模式

gsub 的第一个参数可以是完整的正则表达式,这样您就可以匹配灵活的模式,而不是固定文本。

puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))

替换字符串中的反向引用

在替换字符串中,您可以使用 \1、\2 等引用捕获组。

puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))

完整匹配的反向引用

\0 或 \& 表示完整的匹配文本,适合用于包裹匹配项。

puts('cat dog'.gsub(/\w+/, '[\0]'))

gsub 的代码块形式

gsub 接受一个代码块。每个匹配项都会传入代码块,而代码块的返回值会成为替换内容。这样您就可以动态计算替换结果。

result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts result

将匹配项转换为大写

代码块形式可以轻松完成转换。在这里,我们将每个单词的首字母大写。

title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts title

哈希表替换

如果将哈希表作为第二个参数传入,每个匹配项都会作为键进行查找,并替换为对应的值。这非常适合用于翻译映射表。

map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))

原地修改形式

sub! 和 gsub! 会原地修改字符串;如果没有进行任何更改,则返回 nil。

s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)

删除文本

要删除匹配项,请将其替换为空字符串。

puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))

命名组的反向引用

您可以使用 (?<name>...) 为组命名,并在替换时使用 \k<name> 引用它们。

out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts out

快速检查

sub 和 gsub 有什么区别?

回顾:替换

您学习了如何使用模式转换字符串:

  • sub 替换第一个匹配项,gsub 替换所有匹配项
  • 在替换内容中使用反向引用 \1、\&
  • 代码块形式可以动态计算替换结果
  • 哈希表参数可以将匹配项映射到对应的值
  • sub! / gsub! 会原地修改字符串
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })

常见问题解答

「替换」课时是免费的吗?

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

「替换」这节课中我会学到什么?

使用模式调用 gsub 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ruby Academy 需要有经验吗?

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

「替换」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 正则表达式字面量
  2. 匹配与捕获
  3. 替换
  4. 命名组与锚点
← 返回 Ruby Academy