新手:在我的情况下替换文本

时间:2011-11-01 10:33:08

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

在我的 Ruby on Rails 应用程序中,我的助手中有一个方法可以通过以下方式打开文件:

content = File.open(myfile.txt)

文件的内容如下:

my.car , my.seat, my.age;
my.son , my.dog, my.chair;
...

所以,我拆分内容“; ”,如下所示:

content.split(';').each do |line|
      #Here, I want to replace the text from "my" to "her" on each line
end

如何在内容中将每行“my”替换为“她”?

将内容更新为:

her.car , her.seat, her.age;
her.son , her.dog, her.chair;
...

-------------------------- update ----------------- ----------------

我想更新已打开文件的内容,不仅在读取ruby代码中的内容时替换字符串。

2 个答案:

答案 0 :(得分:2)

line.gsub!(/my/, "her")

虽然您可能希望使用正则表达式更具体,例如

line.gsub!(/\bmy\./, "her")

答案 1 :(得分:2)

无法动态修改文件的内容。文件只能追加,不能展开,因此您无法将my替换为her

您可以从这个基本代码开始:

buf = ""

File.open('myfile.txt') do |file|
    file.readlines.each do |line|
        buf << line.gsub('my', "her")
    end
end

File.open('myfile.txt', 'w') do |file|
    file << buf
end