我有一个包含新行的列表,我喜欢将其转换为数组,例如
JAN
FEB
MAR
APR
MAY
进入["JAN", "FEB", "MAR", "APR", "MAY]
任何帮助将不胜感激。 感谢
这样的东西似乎不起作用(text_file.txt包含上面的月份列表)
file = File.new("text_file.txt", "r")
while (line = file.gets)
line.chomp
list = line.split(/\n/)
puts "#{list}"
end
答案 0 :(得分:21)
这适用于1.9 ..不确定是否为空?虽然
可用1.8%(
JAN
FEB
MAR
APR
MAY
).split(/\n/).reject(&:empty?)
答案 1 :(得分:7)
如果你的意思是这种清单
text = "JAN\nFEB\nMAR\nAPR\nMAY"
然后你可以把它转换成像这样的数组
text.split(/\n/) => ["JAN", "FEB", "MAR", "APR", "MAY"]
<强>更新强> 第二次尝试:
text = []
File.read("text_file.txt").each_line do |line|
text << line.chop
end
puts text => ["JAN", "FEB", "MAR", "APR", "MAY"]
答案 2 :(得分:3)
我发现michalfs单行解决方案非常有用,但我想要注意一个微妙的细节(这可能只对像我这样的ruby-newbies有趣)
如果MAY的 Y 是文本文件中的最后一个字符,则生成的数组将如下所示:
["JAN", "FEB", "MAR", "APR", "MA"]
为什么这样?引自String#chop ruby doc:
chop→new_str 返回删除了最后一个字符的新String。 [...] String#chomp 通常是一种更安全的选择,因为如果字符串不以记录分隔符结尾,它将保持字符串不变。
因此chomp
在这种特殊情况下似乎更准确:
File.readlines("text_file.txt").map{ |l| l.chomp }.reject{ |l| l == '' }
(是的,我只是将&#39; m&#39; 添加到michalfs解决方案中。)
答案 3 :(得分:3)
我意识到这个问题已有几年了,但我无法用其他答案创建一个数组。我能够通过使用以下代码来解决它。 (我的列表以\ r分隔,而不是\ n。)
text = []
input = File.read("x_values.txt")
text = input.split("\r")
puts text.to_s
如果你想拆分\ n而不是:
text = []
input = File.read("x_values.txt")
text = input.split("\n")
puts text.to_s
答案 4 :(得分:0)
尝试获取另一个数组并将其中的行推入到&#34; \ n&#34; 像这样
def read
a=[]
i=0
File.open('text_file.txt', 'r') do |f1|
while line = f1.gets
line.chomp
ppp= line.split(/\n/)
a[i] =ppp[0]
i=i+1
end
puts "#{a}"
end
end
答案 5 :(得分:0)
返回行数组的单行,忽略任何空行:
File.readlines("text_file.txt").map{ |l| l.chop }.reject{ |l| l == '' }
答案 6 :(得分:0)
请注意。这样,您还可以安排转换为数组:
text = "JAN,FEB,MAR,APR,MAY"
res = text.split(",")
res.each { |x| puts x }
puts res.kind_of?(Array)
响应:
JAN
FEB
MAR
APR
MAY
true