Ruby on rails 更新打开文件的内容
可能重复:Ruby on rails 更新打开文件的内容,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,可能重复: 在我的Rails应用程序中,我的助手中有一个方法,通过以下方式打开文件: content = File.open(myfile.txt) 该文件的内容如下所示: my.car , my.seat, my.age; my.son , my.dog, my.chair; ... 我想以将所有“我的”替换为“她”的方式更新此文件的内容 我知道我可以用以下方式将“我的”替换为“她的”: content = File.open('myfile.txt').read content.sp
在我的Rails应用程序中,我的助手中有一个方法,通过以下方式打开文件:
content = File.open(myfile.txt)
该文件的内容如下所示:
my.car , my.seat, my.age;
my.son , my.dog, my.chair;
...
我想以将所有“我的”替换为“她”的方式更新此文件的内容
我知道我可以用以下方式将“我的”替换为“她的”:
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
您必须将内容写回文件 现在,您实际上没有文件本身的变量,只针对您正在读取的内容 首先在中读取内容,然后关闭文件,然后打开以进行写入 试试这个:
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中的文件。这与问题完全相同。我投票结束这篇文章:PIt是一个新话题。比旧的更清楚。我觉得保留这个比较好。你应该更新旧的,让它更清楚。不要提出新问题,这很公平。我想我不在乎哪家关门。通常,提问者最好有一个问题的版本,这样你就可以在一个地方得到所有的反馈/回答。您可以随时在适当位置编辑问题以使其更清晰。现在您的其他问题已得到回答,您可以删除此问题。您需要在最后写入之前调用
myfile.seek(0)
,因为文件指针已被提升。是的,很好。或者-关闭文件并重新打开以进行写入。我已经更新了我的答案来匹配这个。