我有这个:
[["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
但我确信有更好的方法。
答案 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]]
注意:这将从字符串中提取所有数字。