2

次のような文字列があります。

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

各文字列の後の数字を照合し、それらをすべて合計したいと思います。たとえば、1218forを合計したいabc。どうすればいいですか?

4

2 に答える 2

2
"abc-12\nxyz-17\nabc-18\npqr-13\n".split("\n").inject(0) do |sum, line|
  sum += line[/[\w]+(\d)+/].to_i
end
于 2012-08-07T00:36:49.447 に答える
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}
于 2012-08-07T00:41:46.233 に答える