我正在尝试将名称列表从文本文件传输到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
答案 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]