我正在尝试根据日期对某些数据进行分组,然后将这些数据添加到一起,并以十进制形式将其吐出到rails数据库或表中。
E.G。我想拿这个
8 hrs, 38 mins 6:51am 3:30pm Apr 18
3 hrs, 44 mins 11:47am 3:32pm Apr 17
4 hrs, 23 mins 6:58am 11:20am Apr 17
并返回
8.51 Apr 18
8.12 Apr 17
等等。
使用.to_string.split()分割数据应该很容易,但我不知道如何对它进行分组。理想情况下,有人可以将整个时钟复制一个月并让它返回。
答案 0 :(得分:1)
你可以这样做:
a = ["8 hrs, 38 mins 6:51am 3:30pm Apr 18",
"3 hrs, 44 mins 11:47am 3:32pm Apr 17",
"4 hrs, 23 mins 6:58am 11:20am Apr 17"]
R = /
(\d+) # capture first group of digits
\shrs,\s # match ' hrs, '
(\d+) # capture second group of digits
\smins\s # match ' mins '
\S+\s # match any number of non-ws chars followed by one ws char
\S+\s # repeat
(.+) # capture remaining text
/x
a.map do |s|
h,m,d = s.scan(R).first
"#{(h.to_f+(m.to_f/60)).round(2)} #{d}"
end
#=> ["8.63 Apr 18", "3.73 Apr 17", "4.38 Apr 17"]
有关:
s = "8 hrs, 38 mins 6:51am 3:30pm Apr 18"
步骤如下:
b = s.scan(R)
#=> [["8", "38", "Apr 18"]]
h,m,d = b.first
#=> = ["8", "38", "Apr 18"]
h #=> "8"
m #=> "38"
d #=> "Apr 18"
c = h.to_f+(m.to_f/60)
#=> 8.0 + (38.0/60)
#=> 8.633333333333333
e = c.round(2)
#=> 8.63
"#{e} #{d}"
#=> "8.63 Apr 18"