在我的Rails应用程序中,我的帮助程序中有一个方法,它通过以下方式打开文件:
content = File.open(myfile.txt)
该文件的内容如下:
my.car , my.seat, my.age;
my.son , my.dog, my.chair;
...
我想以将所有“我的”替换为“她”的方式更新此文件的内容,
我知道我可以将“my”替换为“她的”:
content = File.open('myfile.txt').read
content.split(';').each do |line|
line.gsub!(/my/, "her")
end
但这仅在输出内容行时替换字符串,文件内容不会改变。 如何将已打开文件的内容更新为:
her.car , her.seat, her.age;
her.son , her.dog, her.chair;
...
-------------------更新(我试过的)------------------- -
我尝试了以下方式,但它没有清理旧内容,只是追加新内容,我想只有新内容,那该怎么办?
File.open('myfile.txt', 'r+') do |myfile|
content = myfile.read
content.split(';').each do |line|
newline = line.gsub!(/my/, "her")
myfile.write(newline+';')
end
end
答案 0 :(得分:1)
您必须将内容写回文件。
现在你实际上没有文件本身的变量,只是为了你正在阅读它的内容。
首先阅读内容,然后关闭文件,然后将其打开以进行书写。
试试这个:
content = File.open('myfile.txt').read
File.open('myfile.txt', 'w') do |myfile|
content.split(';').each do |line|
line.gsub!(/my/, "her")
write(line)
end
end
注意:未经测试,我建议您阅读ruby中的文件。