我想在下面添加换行符。但结果是错误的。告诉我怎么回事。
Test.txt(前)
------------------
2014-09
2014-10
2014-11
------------------Test.txt(后)
------------------
2014-09
2014-10
2014-11
------------------我做了一个红宝石脚本下面,但结果是错误的。
f = File.open("test.txt","r+")
f.each{|line|
if line.include?("2014-10")
f.puts nil
end
}
f.close结果
------------------
2014-09
2014-10
014-11
------------------发布于 2014-11-03 08:37:20
同时读取和写入文件可能会变得混乱,与数组等其他数据结构一样。您应该在进行过程中构建一个新文件。
一些注意事项:
File.open的块形式,因为它将阻止您忘记调用f.close。puts nil与没有参数的puts相同do ... end而不是{ ... }。File.open(...).each可以用File.foreach代替StringIO对象中,该对象将响应puts等。示例:
require 'stringio'
file = 'test.txt'
output = StringIO.new
File.foreach(file) do |line|
if line.include? '2014-10'
output.puts
else
output << line
end
end
output.rewind
File.open(file, 'w') do |f|
f.write output.read
end发布于 2014-11-03 08:17:47
要解决问题,最简单的方法是创建一个新文件,将新文本输出到其中。为此,您需要打开输入文件和输出文件,并迭代文件的每一行,检查条件并将所需的行放入输出文件中。
示例
require 'fileutils'
File.open("text-output.txt", "w") do |output|
File.foreach("text.txt") do |line|
if line.include?("2014-10")
output.puts line + "\n"
else
output.puts line
end
end
end
FileUtils.mv("text-output.txt", "text.txt")易道
File.write(f = "text.txt", File.read(f).gsub(/2014-10/,"2014-10\n"))https://stackoverflow.com/questions/26709355
复制相似问题