从ruby中的字符串数组序列中获取一组数字

从ruby中的字符串数组序列中获取一组数字,ruby,arrays,regex,string,Ruby,Arrays,Regex,String,我有一个字符串数组,如下所示 b=["yesterday: 40", "today: 20", "change: +3", "changes_2: 10.00%", "high: 30", "low: 20"] 如何从该数组中获取值40,20、+3,10.00%、30和20的集合 我做完了 c = b.map {|n| n.split(" ")} 返回 [["yesterday:", "40"], ["today:", "20"], ["change:", "+3"], ["change

我有一个字符串数组,如下所示

b=["yesterday: 40", "today: 20", "change: +3", "changes_2: 10.00%", "high: 30", "low: 20"]
如何从该数组中获取值40,20、+3,10.00%、30和20的集合

我做完了

 c = b.map {|n| n.split(" ")}
返回

 [["yesterday:", "40"], ["today:", "20"], ["change:", "+3"], ["changes_2:", "10.00%"], ["high:", "30"], ["low:", "20"]]
在块中返回拆分数组之前,只需为其编制索引:

> c = b.map {|n| n.split(": ")[1]}
=> ["40", "20", "+3", "10.00%", "30", "20"]

考虑在数组中使用map,然后在地图块中的每个组件字符串上使用StReStRead来提取你想要的东西。正如您所见,Stringsplit返回一个数组,因此您可以选择它的特定索引从映射块返回,而不仅仅是聚合从split返回的所有数组。@ChrisHeald。。。我已经按照你说的映射和拆分了它。我现在如何提取值,我做了c.first.last,得到了40,但是当我做d=c.each{x | x.last}时,我仍然得到cI'd use返回的相同数组。last代替了索引,但这是个人偏好。