我有一个原始的.txt文件格式如下:
01.01.2017;New Year
16.04.2017;Easter
25.12.2017;Christmas
(旁注:日期格式为dd.mm.yyyy)
我正在尝试读取此文件,每行切片文本并从中挖出一个哈希,键是日期,其值是相应公共假日的名称。
我已经到目前为止了:
holidays = Hash[*File.read('holidays.txt').split(/;|\n/)]
这导致日期被设置为字符串,而不是日期对象。
关于如何将这些字符串转换为Date(或DateTime)对象的任何想法?
P.S。:我只使用Ruby,所以没有Rails助手......
答案 0 :(得分:2)
像这样的东西
holidays = File.read('holidays.txt').split(/\n/).map do |row|
date, holiday_name = row.split(';')
date = Date.parse(date, '%d.%m.%Y')
[date, holiday_name]
end.to_h
=> {
#<Date: 2017-01-01 ((2457755j,0s,0n),+0s,2299161j)> => "New Year",
#<Date: 2017-04-16 ((2457860j,0s,0n),+0s,2299161j)> => "Easter",
#<Date: 2017-12-25 ((2458113j,0s,0n),+0s,2299161j)> => "Christmas"
}