我在 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。
我在 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。
arr.map {|el| el.split('-').last}
我很懒:
[
'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 周期或导致代码在尝试解开数组时不简单。
我觉得这样做很有趣:
arr.map{|v| v.reverse.to_i.to_s.reverse.to_i}
(不要在生产中使用它,这只是另一种思考方式。)
我认为这很简单,您应该在 google 上搜索一下关于 ruby 字符串的信息。但是,您将需要这样的东西
arr[i].split("-").last.to_i
我在irb上试过这个
1.9.3p194 :003 > "tb-5-atf, ac-23".split("-").last.to_i
=> 23
也许是这样:
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]