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

Ruby 如何将名称从.txt文件传输到预定义变量中的数组,ruby,Ruby,我试图在Ruby中将名称列表从文本文件传输到表/数组。文件中的名称如下所示: Mandy Sarah Jane Melody Ulrika Katy Sue 有些名字是一个词,有些是两个词。我有一个变量@names,我想将它们作为数组移动到该变量中。我还需要数一数有多少名字是我根本做不到的 我有这个: defreadwordfile(filename) file = file.open("names.txt","r") file.each do |line| contentsArray =

我试图在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

您可以这样做:

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.match(/<p>(.*)<\/p>/)[1]
names=IO.foreach(“names.txt”)。带有_对象([])do |行,数组|
数组[“Mandy”、“Sarah Jane”、“Melody”、“Ulrika”、“Katy Sue”]
假设每行只有一个名称或名称/姓氏组合

不确定问题中是否存在格式问题,或者文件中是否存在实际的空行。如果有空行,并且要忽略它们,则可以用以下内容替换第二行:

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

这就是你所需要的。请参阅。

我建议对代码使用适当的缩进。此外,您的代码不能正常运行。有关详细信息,请参阅“”和链接页以及“”。要修复代码,请执行以下操作:def readwordfile(文件名);file=file.open(“names.txt”);contentsArray=[];file.each{line | contentArray.push(line.chomp)};file.close;contentArray;end;@names=readwordfile(文件名)
。在这里,块变量
line`包含文件的一行。因此,您不需要
文件。每行{line |…
。您可以将
“r”
作为
打开
的参数,但如果只有一个参数
“r"
是默认设置,因此通常不包括在内。请注意我添加了
.chomp
以删除行的换行符。您的问题处于保留状态,而不是关闭状态。请编辑它以澄清问题,保留状态可能会被删除。嗨,Cary,非常感谢。它完全符合我的要求,但在输入每个名称后\n是否有办法仅获取name而不是\n?谢谢你,请仔细检查一下。chomp:true的目的是删除换行符。尝试:
IO.write('t.txt','dog\ncat\n');IO.readlines('t.txt',chomp:true)#=>[“dog”,“cat”]
(你可以像经常做的那样用
文件替换
IO
。)
contents  = IO.readlines(filename, chomp: true)