Ruby - 打开文件,查找并替换多行

opr*_*ogo 21 ruby

我是ruby的新手,希望有人可以帮我弄清楚如何打开文件,然后使用gsub查找并替换多个条件.

这是我到目前为止所得到的,但这似乎不起作用,因为第二个替换var覆盖了第一个:

text = File.read(filepath)
replace = text.gsub(/aaa/, "Replaced aaa with 111")
replace = text.gsub(/bbb/, "Replace bbb with 222")
File.open(filepath, "w") {|file| file.puts replace}
Run Code Online (Sandbox Code Playgroud)

gtd*_*gtd 28

将第三行更改为

replace = replace.gsub(/bbb/, "Replace bbb with 222")
Run Code Online (Sandbox Code Playgroud)


Ada*_*erg 18

你每次都要从原来的"文本"中取代,第二行需要替换替换:

replace = replace.gsub(/bbb/, "Replace bbb with 222")
Run Code Online (Sandbox Code Playgroud)


Ste*_*oss 11

有趣的是,如果您不想重新扫描数据,请使用gsub的块形式:

replace = text.gsub(/(aaa|bbb)/) do |match|
  case match
    when 'aaa': 'Replaced aaa with 111'
    when 'bbb': 'Replace bbb with 222'
  end
end
Run Code Online (Sandbox Code Playgroud)

这可能不是最有效的做事方式,但这是看待问题的另一种方式.如果性能对您很重要,则值得对两种方式进行基准测试