2016-03-05 104 views
-1

使用正則表達式我有數據:在GROUP_BY

data = [["/","201408","41"],["/","201409","35"],["/","201410","59"],["/","201411","50"],["/","201412","79"],["/","201501","97"],["/","201502","85"],["/","201503","518"],["/","201504","251"],["/","201505","748"],["/","201506","916"],["/","201507","1008"],["/","201508","449"],["/","201509","235"],["/","201510","195"],["/","201511","229"],["/","201512","202"],["/","201601","142"],["/","201602","134"],["/","201603","17"]] 

我想通過年級組他們,但我不知道我怎麼能在group_by使用正則表達式。我應該看起來像這樣:

grouped = data.group_by { |row| row[1] } 

但是接下來會發生什麼?行[1]字符串是YYYYMM

+0

'year'在哪裏? – sawa

+0

行[1]字符串是YYYYMM –

+0

這樣寫在問題中。 – sawa

回答

1

爲什麼你需要一個正則表達式?這不是你想要的嗎?

data.group_by { |d| d[1][0..3] } 
0

我更喜歡幻覺的答案,但如果你仍然想使用正則表達式:
data.group_by { |row| row[1].match(/^(\d{4})/).captures[0] }

不是很乾淨,但它的作品。