在Ruby中将数字从正则表达式转换为整数

时间:2014-09-20 16:32:32

标签: ruby regex string split integer

我想将数字从正则表达式转换为整数。我不知道怎么解释清楚(我的英语不好)。所以,我将举个例子:

regex      = /data:\s*(\d+(?:\s*,\s*\d+)*)/i
string     = "Data: 1, 2, 3, 4"
data       = string.match(regex)
split_data = data[1].split(", ")
int_data1  = split_data.each {|i|i = i.to_i}
int_data2  = [1, 2, 3, 4]
p int_data1, int_data2

# int_data1 => ["1", "2", "3", "4"]
# int_data2 => [1, 2, 3, 4]

我希望int_data1返回[1,2,3,4],但不能转换为整数。所以,它会一直给我[“1”,“2”,“3”,“4”]。

我做错了吗?

1 个答案:

答案 0 :(得分:1)

此:

int_data1 = split_data.each { |i| i = i.to_i }

应该是:

int_data1 = split_data.map { |i| i.to_i }

或更短的语法:

int_data1 = split_data.map(&:to_i)

了解difference between .each() and .map()