我试图在某些条件下将一个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
感谢您的帮助!这是为了好奇,而不是作业或其他任何东西。我正在尝试通过简单的事情来建立红宝石技能。
答案 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
是您所需的功能