从嵌套数组中的字符串中删除字母并将其转换为整数

时间:2015-07-24 07:39:38

标签: arrays ruby

我有这个:

[["a3"], ["b3"], ["c7", "c9"]]

我需要从字符串中删除字母并将其转换为整数。我需要:

[[3], [3], [7, 9]]

我试过了:

 [["a3"], ["b3"], ["c7", "c9"]].each do |a| 
   a.map do |string| 
     puts leave_num = string.slice!(0) 
     puts leave_num.to_i
   end  
 end

但我确信有更好的方法。

3 个答案:

答案 0 :(得分:5)

a = [["a3"], ["b3"], ["c7", "c9"]]

a.map { |r| r.map { |e| e[/\d+/].to_i } }
# => [[3], [3], [7, 9]]

答案 1 :(得分:2)

这样做的一种方法是:

.php

基本上我会遍历每个元素并使用正则表达式返回整数。

答案 2 :(得分:1)

您可以在代码中使用:

string[0]  = ''
puts string  # instead puts leave_num = string.slice!(0)  
puts string.to_i  # instead puts leave_num.to_i

另一种选择:

a.map{|e| e.map{|n| n[1..-1].to_i}}
 #=> [[3], [3], [7, 9]]

如果你的数组元素有更多的字母,如"d58as9a",那么对于这种情况试试这个虽然@Amadan和@Shivam的答案是正确的:

a = [["a3"], ["b3"], ["c7", "c9"], ["d58as9a", "d5d54d"] ]
 > a.map{|e| e.map{|n| n.scan(/\d/).join('').to_i}}
 => [[3], [3], [7, 9], [589, 554]]

注意:这将从字符串中提取所有数字。