将数字读入ruby中的数组

时间:2014-02-26 17:35:00

标签: ruby arrays filereader

我试图在某些条件下将一个txt文件中的数字读入ruby中的数组。文本文件输入如下所示:

1 2 3 4
5 6 7 8
9;10 11 12

我想要做的是读取数字到';',将它们存储在数组中,在该数组上执行一个方法,然后清除数组并再次从分号开始读取。在这里,您可以看到程序的执行,其输入如上所示:

阅读[1,2,3,4,5,6,7,8,9] - >执行方法X - > []清除数组 - > [10 11 12] - >执行方法X ...

我认为以下代码的变体可以解决这个问题,但我自己也不太了解ruby。

 a = []
 File.open('names.txt') do |f|
   f.each_line do |line|
     a << line.split.map(&:to_i)
   end
 end

感谢您的帮助!这是为了好奇,而不是作业或其他任何东西。我正在尝试通过简单的事情来建立红宝石技能。

3 个答案:

答案 0 :(得分:3)

我会这样做:

File.readlines('a.txt',';').each do |string|
  ary = string.scan(/\d+/).map(&:to_i)
  method_x(ary)
end

根据文档readlines(name, sep=$/ [, open_args]),您可以将行分隔符设为;

  

将name指定的整个文件读取为单独的行,并返回数组中的这些行。 行由sep 分隔。

答案 1 :(得分:2)

你可以做这样的事情。

f = File.read 'names.txt' 
f.split(';').each  do |set|
  method_x(set.split.map(&:to_i))
end

这假定method_x将数组作为arg。

答案 2 :(得分:0)

File.read('names.txt').split(';').each { |x| the_function(x.split.map(&:to_i)) }

其中the_function是您所需的功能