2013-07-19 48 views
1

我想下面的数组转换:如何将数组数组转换为整数?

2.0.0-p0 :021 > test = 1, 440, 840 
=> [1, 440, 840] 

以下整数:

1440840 

如果我做了split(','),然后加入他们的行列,它的工作原理,但我敢肯定有一个更好的方法。

回答

5

如果是数组,则无需使用拆分。只要做到:

test.join.to_i 

采样运行与join

2.0.0-p195 :007 > t.is_a? Array 
=> true 
2.0.0-p195 :008 > t.join.to_i 
=> 1440840 
2.0.0-p195 :009 > 
+1

要对此进行一点说明,'#join'会将每个元素隐式转换为一个字符串,然后将它们连接在一起而不带分隔符,从而导致数组中值的字符串连接。然后用'to_i'将其转换为整数。 –

+0

太棒了,谢谢 – rahrahruby

+1

@ChrisHeald添加了文档来澄清。 – squiguy

0

如何

test.inject { |ttl, n| ttl * 1000 + n } 
0

这里有一些事情默想:

STRING = '1,440,840' 

STRING.gsub(',', '').to_i # => 1440840 
STRING.tr(',', '').to_i # => 1440840 
STRING.delete(',').to_i # => 1440840 
STRING.scan(/\d+/).join.to_i # => 1440840 

require 'scanf' 
STRING.scanf('%d,%d,%d').join.to_i # => 1440840 

我们不见在Ruby中使用了很多,但它是C语言中的中流砥柱,经常在Perl中使用。这是Kernels的printf,sprintf,format和String的%的另一面。