我有一个文本文件,其布局如下所示:
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))
我做错了什么?