2009-11-09 58 views

回答

8

目前尚不清楚您的文件中的數據格式是什麼,以及您用於排序的標準,所以我無法爲您提供準確的答案。

但是,基本上,你可能需要像這樣:

File.open("file_name","r").read.split(",").sort_by {|x| x.length} 

您:

  • 打開使用File.open文件。
  • 閱讀整個文件並獲得一個字符串。您也可以使用each方法逐行讀取文件。
  • 拆分字符串使用split。使用的分隔符是,
  • 使用sort_by根據塊中指定的標準對它們進行排序。
+0

「r」在這裏如何使用?它代表什麼?另外,我不太明白{| x | w.length}。如果你可以請分解一下像本人這樣的Ruby n00b,我會非常感激。 – 2009-11-09 04:01:22

+1

「r」表示文件正在「讀」模式下打開。此外,w.lenth看起來像一個類型。它應該是x.length。 '{| x | x.length}'是傳遞給'sort_by'方法的塊。它使sort_by方法按每個「分割」單詞的長度排序。在這裏,使用分隔符的單詞分隔符是逗號(,)。 – Chirantan 2009-11-09 04:33:15

+1

我現在看到了。非常感謝你的澄清。 – 2009-11-09 05:16:00

2

Enumerable#sort_by將允許您使用特定比較函數對數組(或其他可枚舉對象)進行排序。

0

如果「帶分隔符的文本文件」你的意思是CSV文件(字符分隔值),那麼你可以使用csv library,這是標準庫的一部分,對其進行解析。 CSV爲您提供外觀和感覺像Ruby Hash es和Array s的對象,因此您可以使用所有標準Ruby方法進行排序,過濾和迭代,包括前述Enumerable#sort_by