Arrays 当我试图用Ruby从一个文件生成一个数组时,它会生成多个数组

Arrays 当我试图用Ruby从一个文件生成一个数组时,它会生成多个数组,arrays,ruby,Arrays,Ruby,如果这是一个简单的解决方案,很抱歉,但我正在尝试将文件中的所有数字捕获到一个数组中。我要导入的文件读取 3 5 10 2 7 15 这是我的密码 grab = Array.new IO.foreach("test.txt") do |line| grab = line.chomp(" " + "/n").split end p grab 当我这样做时,它会打印最后一行数字,而当我从IO块打印它时,它会打印2个数组。第一行和第二行。如果要将其合并到单个数组中: grab = [ ] I

如果这是一个简单的解决方案,很抱歉,但我正在尝试将文件中的所有数字捕获到一个数组中。我要导入的文件读取

3 5 10 
2 7 15
这是我的密码

grab = Array.new
IO.foreach("test.txt") do |line|
  grab = line.chomp(" " + "/n").split
end
p grab

当我这样做时,它会打印最后一行数字,而当我从IO块打印它时,它会打印2个数组。第一行和第二行。

如果要将其合并到单个数组中:

grab = [ ]

IO.foreach("test.txt") do |line|
  grab.concat(line.chomp.split)
end
另一种方式:

grab = IO.readlines("test.txt").flat_map do |line|
  line.chomp.split
end

你应该这样做

grab << line.chomp(" " + "/n").split

grab这将为您提供您想要的:

grab = IO.foreach("test2.txt").map {|line| line.split(/\D/) }.flatten
puts "#{grab}"
这将生成单个阵列输出:

["3", "5", "10", "2", "7", "15"]
如果您愿意的话,可以将其全部包装成一个漂亮、整洁的内衬:

grab = IO.foreach("test2.txt").map {|line| line.split(/\D/) }.flatten
puts "#{grab}"
如果要在此过程中进行整数转换,可以将
行.split
修改为:

grab = line.split(/\D/).map(&:to_i)
该更改将产生以下输出:

[3, 5, 10, 2, 7, 15]

grab=line.chomp(“+”/n”)。split将数组放入grab中2次,split返回一个数组。。。不知道你是否考虑文件包含一个数组(向量),两个线分裂,或者一个2-D数组(矩阵)。请澄清?问题是您没有将项目添加到数组中(正如您使用
grab时所做的那样)