0Pricing
Ruby Academy · 课时

查找与替换

gsub、sub、match

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

查找子字符串

index 方法会返回第一个匹配项的位置;如果找不到,则返回 nil。include? 会返回 true 或 false。

text = "hello world"
puts text.index("world")
puts text.include?("world")

使用 sub 替换第一个匹配项

sub 只会将模式的第一个出现项替换为新值。

text = "cat cat cat"
puts text.sub("cat", "dog")

使用 gsub 替换所有匹配项

gsub 表示全局替换。它会替换每一个出现项。

text = "cat cat cat"
puts text.gsub("cat", "dog")

使用正则表达式

像 /.../ 这样写在斜杠之间的模式就是正则表达式。/\d/ 可以匹配一个数字。gsub 和 sub 都接受正则表达式模式。

text = "a1b2c3"
puts text.gsub(/\d/, "*")

使用匹配检查

match? 会在字符串中的任意位置进行正则表达式匹配,匹配成功时返回 true。它适合用于快速、简洁的检查。

email = "ada@ruby.org"
puts email.match?(/@/)
puts "no at sign".match?(/@/)

使用 match 捕获内容

match 会返回一个 MatchData 对象。索引 [0] 表示完整的匹配结果;圆括号会创建捕获组,可通过 [1]、[2] 等访问。

data = "2024-05-30"
m = data.match(/(\d+)-(\d+)-(\d+)/)
puts m[1]
puts m[2]

使用 scan 查找所有匹配项

scan 会返回字符串中每个匹配项组成的数组。它非常适合提取所有数字或单词。

text = "phone 555 and 777"
puts text.scan(/\d+/).inspect

锚点

锚点会将匹配限制在某个位置。^ 表示行首,$ 表示行尾。\A 和 \z 会将匹配限制在整个字符串的边界。

puts "hello".match?(/^hel/)
puts "hello".match?(/llo$/)
puts "hello".match?(/^world/)

字符类

方括号用于定义允许的字符集合。[aeiou] 可以匹配任意元音字母。[a-z] 可以匹配任意小写字母。

text = "Ruby"
puts text.gsub(/[aeiou]/i, "_")

gsub 中的代码块

向 gsub 传入代码块,可以动态转换每个匹配项。匹配到的文本就是代码块的参数。

text = "one two"
result = text.gsub(/\w+/) { |w| w.upcase }
puts result

不区分大小写的搜索

在正则表达式后添加 i 标志,可以忽略字母的大小写。

text = "Hello HELLO hello"
puts text.gsub(/hello/i, "hi")

快速检查

请检查您对搜索和替换的掌握情况。

回顾

现在您可以搜索和替换文本:

  • 使用 index、include?、match? 进行查找
  • 使用 sub 替换第一个匹配项,使用 gsub 替换所有匹配项
  • 使用正则表达式模式、锚点和字符类
  • 使用 scan 提取所有匹配项,并使用代码块进行动态替换

接下来:拆分和连接字符串。

puts "a,b,c".gsub(",", " | ")

常见问题解答

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

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

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

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

学习 Ruby Academy 需要有经验吗?

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

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

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

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

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

此课程中的所有课时

  1. 字符串基础与方法
  2. 插值与格式化
  3. 查找与替换
  4. 拆分与连接
← 返回 Ruby Academy