-2

我在 ruby​​ 中有一个数组,其值如下:

arr

Value 1 : tb-5-atf, ac-23 
Value 2 : tb-5-atf, ac-5498
Value 3 : tb-5-atf, ac-236

我只想从中提取最后一个“-”之后的数字,即 23、5498、236。

4

5 回答 5

1
arr.map {|el| el.split('-').last}
于 2013-04-19T22:15:09.143 回答
1

我很懒:

[
  'Value 1 : tb-5-atf, ac-23',
  'Value 2 : tb-5-atf, ac-5498',
  'Value 3 : tb-5-atf, ac-236'
].map{ |r| r[/-(\d+)$/, 1] }

返回:

[
    [0] "23",
    [1] "5498",
    [2] "236"
]

如果你想要整数值:

[
  'Value 1 : tb-5-atf, ac-23',
  'Value 2 : tb-5-atf, ac-5498',
  'Value 3 : tb-5-atf, ac-236'
].map{ |r| r[/-(\d+)$/, 1].to_i }

返回:

[
    [0] 23,
    [1] 5498,
    [2] 236
]

虽然可以使用split('-')or来执行此操作scan,但这样做会生成临时数组,然后将它们丢弃,浪费 CPU 周期或导致代码在尝试解开数组时不简单。

于 2013-04-20T04:50:49.630 回答
0

我觉得这样做很有趣:

arr.map{|v| v.reverse.to_i.to_s.reverse.to_i}

(不要在生产中使用它,这只是另一种思考方式。)

于 2013-04-19T22:25:46.093 回答
0

我认为这很简单,您应该在 google 上搜索一下关于 ruby​​ 字符串的信息。但是,您将需要这样的东西

arr[i].split("-").last.to_i

我在irb上试过这个

1.9.3p194 :003 > "tb-5-atf, ac-23".split("-").last.to_i
=> 23
于 2013-04-19T22:15:23.353 回答
0

也许是这样:

a = [["tb-5-atf", "ac-23"],["tb-5-atf", "ac-5498"], ["tb-5-atf", "ac-236"] ]

r = a.map { |i|  i.last.split("-").last.to_i }
p r # output => [23, 5498, 236]
于 2013-04-19T22:20:47.933 回答