如何将整数拆分为整数组

时间:2014-03-09 21:08:02

标签: ruby

这是我的代码。我正在尝试获得一个二维数组,每个数组都有五个连续的整数。此代码不起作用。因此,如果输入为'1234567891',则输出必须为[[12345],[67891]]

def integer_groups(x)
    array = x.to_s.split('')
    new_array = []
    intervals = x / 5

    intervals.times { |n| new_array[n] << array.shift(5) }
    puts n
end

1 个答案:

答案 0 :(得分:3)

执行以下操作:

1234567891.to_s.chars.each_slice(5).to_a
# => [["1", "2", "3", "4", "5"], ["6", "7", "8", "9", "1"]]
1234567891.to_s.chars.each_slice(5).map { |a| a.join.to_i }
# => [12345, 67891]

更新(最短和最快)

num  = 1234567891
num.to_s.scan(/\d{1,5}/).map { |n| [n.to_i] }
# => [[12345], [67891]]
  • scan(/\d{1,5}/) - 它将扫描5组中字符串中的数字。如果字符串长度不能被5整除,那么它也会将最后一个字符扫描为1 <= n < 5之间的一组长度。这里nscan给出的字符串的大小。

/\d{1,5}/也可以写为/.{1,5}/,因为源字符串只包含数字,不包含其他类型的字符。 .表示除\n以外的任何字符。