查找与替换
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 反馈 — 无需本地设置。