如何在Ruby中的另一个字符串之后匹配和迭代字符串

时间:2012-08-07 00:28:04

标签: ruby regex string

我有一个字符串:

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

我希望匹配每个字符串后的数字并将它们全部加起来。例如,我想为12求和18abc。我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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}