2010-06-08 91 views
0

我有一个奇怪的问题与Ruby。我想从文件中读取数据,然后将数据放入数组中。 奇怪的是,它在另一个脚本中工作,它基本上是一样的。推送each_line到阵列不工作

quoteArray = [] 
quoteFile = File.new("quotes.txt", "r") or die "Unable to open file..." 
quoteFile.each_line { |line| quoteArray.push line } 
puts quoteArray[0] 

我所得到的只是一个数组,其中包含整个文本文件所在的一个元素。怎么了?它是我的机器吗?文本文件?有任何想法吗?

在此先感谢

+0

是否在块#each_line中打印行变量。如果你看到一些数据,你的文件是确定的。 – shingara 2010-06-08 09:10:06

+0

我不明白你的意思。你能说得更具描述性吗? – Zettt 2010-06-08 11:53:25

回答

3
quoteFile = File.read("quotes.txt").gsub(/\n?\r/, "\n").lines.to_a 
+0

非常简单直接。非常感谢你! – Zettt 2010-06-08 13:04:11

0

您正在打印quoteArray[0]。尝试打印quoteArray.inspect,看看你得到什么。

+0

检查给我一个looong字符串与\ r中的一些。我假设它与某些错误的行结尾有关。你知道我现在应该做什么吗? – Zettt 2010-06-08 11:55:38

0

它适用于我。确保你的文本文件中有多行,而不仅仅是一个大行。

+0

因为我不确定我的文件是否足够有效,所以我已经上传了它,以便您可以自己查看它。 http://dl.dropbox.com/u/6102/tmp/quotes.zip – Zettt 2010-06-08 11:54:11

+0

你的文本文件没有换行符,而是它有回车猜测,这就是为什么它在一行中获取整个文件内容。我看到康斯坦丁的解决方案已经解决了这个问题:) – nas 2010-06-08 13:27:42