如何将名称从.txt文件传输到预定义变量中的数组

时间:2019-10-26 12:40:18

标签: ruby

我正在尝试将名称列表从文本文件传输到Ruby中的表/数组。文件中的名称如下所示:

Mandy
Sarah Jane
Melody
Ulrika
Katy Sue

有些名字是一个单词,另外两个是。我有一个变量@names,我想将它们作为数组移动到该变量中。我还需要计算有多少个我根本做不到的名字!

我有这个:

defreadwordfile(filename)
file = file.open("names.txt","r")
file.each do |line|

contentsArray = []
file.each_line {|line|
contentArray.push line }

@names = contentArray
end

file.close
end

2 个答案:

答案 0 :(得分:3)

contents  = IO.readlines(filename, chomp: true)

是您所需要的。参见IO::readlines

答案 1 :(得分:0)

您可以执行以下操作:

names = IO.foreach("names.txt").with_object([]) do |line,array|
  array << line.strip
end

p names
#=> ["Mandy", "Sarah Jane", "Melody", "Ulrika", "Katy Sue"]

假设每行只有一个名称或名称/姓氏组合。

不确定是问题中的格式问题,还是文件中实际有空行。如果有空行,而您想忽略它们,则可以用以下内容替换第二行:

array << line.strip unless line.strip.empty?

这将忽略任何没有名称/姓氏的行。

在尝试编辑帖子时,我注意到名称位于<p> </p>段落标签之间,不确定是否是故意的,但是如果您要避免使用这些标签,则可以这样做:

array << line.match(/<p>(.*)<\/p>/)[1]