2012-08-07 60 views
2

另一個字符串我有這樣一個字符串後反覆的字符串:如何匹配和紅寶石

"abc-12\nxyz-17\nabc-18\npqr-13\n" 

我想每個字符串後數相匹配,並總結他們都放棄了。例如,我想總計1218abc。我如何去做這件事?

回答

2
s = "abc-12\nxyz-17\nabc-18\npqr-13\n" 

s.split.inject(Hash.new(0)) { |h,e| id, n = e.split('-'); h[id] += n.to_i; h } 
=> {"abc"=>30, "xyz"=>17, "pqr"=>13} 
+0

是否有一個Ruby成語的生成散列轉換成兩排。我想得到[「abc」,「xyz」,「pqr」]和[30,17,13]。我最終爲此寫了一個方法。 – navgeet 2012-08-08 04:26:10

+1

@navgeet - 'Hash'具有名爲'keys'和'values'的方法。那些給你你需要的陣列分別。 – Casper 2012-08-08 10:10:47

2
"abc-12\nxyz-17\nabc-18\npqr-13\n".split("\n").inject(0) do |sum, line| 
    sum += line[/[\w]+(\d)+/].to_i 
end