Ruby程序无法读取文本文件的所有行

时间:2016-08-02 19:56:09

标签: ruby text-manipulation

我有一个文本文件,其布局如下所示:

2014-10-12 21:30:49
Some text here...
2013-08-30 10:40:38
Some more text here...

程序的目的是读取文件并更改日期的格式,使其如下所示:

10/12/2014, 21:30:49
Some text here...
08/30/2013, 10:40:38
Some more text here...

问题是程序只修复了日期的第一个实例并退出。在第一次约会之前或在第一次约会之后出现了多少行似乎并不重要。它只是修复了它找到的第一个适用的案例,然后终止。

以下是代码:

require 'date'

INPUT_FILE = 'some_file.txt'
OLD_FILE   = 'some_file.old'
TEMP_FILE  = "some_file.#{ $$ }"

File.delete(OLD_FILE) if (File.exist?(OLD_FILE))

File.open(TEMP_FILE, 'w') do |fo|
  File.foreach(INPUT_FILE) do |li|
    li.chomp!
    if ( li[/^(\d{4}-\d{2}-\d{2} \S+)/] )
      fo.puts DateTime.strptime($1, '%Y-%m-%d %H:%M:%S').strftime('%m/%d/%Y, %H:%M:%S')
    else
      fo.puts li
    end  
  end
  File.rename(INPUT_FILE, OLD_FILE)
end

File.rename(TEMP_FILE, INPUT_FILE) if (File.exist?(OLD_FILE))

我做错了什么?

0 个答案:

没有答案