我想将数字从正则表达式转换为整数。我不知道怎么解释清楚(我的英语不好)。所以,我将举个例子:
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”]。
我做错了吗?
答案 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)