2016-06-28 12 views
1

を抽出する助けが必要私の配列です:はここで、パイプで区切られたテキストファイルからデータ

http://imdb.com/title/tt0111161/?ref_=chttp_tt_1|The Shawshank Redemption|1994|USA|1994-10-14|Crime,Drama|142 min|9.3|Frank Darabont|Tim Robbins,Morgan Freeman,Bob Gunton 
http://imdb.com/title/tt0068646/?ref_=chttp_tt_2|The Godfather|1972|USA|1972-03-24|Crime,Drama|175 min|9.2|Francis Ford Coppola|Marlon Brando,Al Pacino,James Caan 
....., etc. (250 films) 

、私にハッシュを与える私のコード、:

file = IO.read("movies.txt") 
new_arr = file.split("\n") 
new_xd = new_arr.map{ |e| s = e.split("|") 
{url: s[0], title: s[1], Year: s[2], Country: s[3], Full_Year: s[4], 
Genre: s[5], Time: s[6],Rating: s[7], Director: s[8], Actor: s[9]} 
} 

私はすべてのユニークなを一覧表示したいです結果をアルファベット順に並べ替えることができます。私は姓でソートする方法を見つけるのが難しいです。誰にでも提案はありますか?

+0

無関係?名前の順序は文化固有です。詳細については、[Wikipedia](https://en.wikipedia.org/wiki/Personal_name#Name_order)を参照してください。 –

答えて

0

http://ruby-doc.org/core-2.3.1/Enumerable.html#method-i-sort_byあなたを助けることができる:

ポイント、あなたが最後の名前によって西洋起源の名前をソートしたい確信していると
pry(main)> new_xd.map{|movie| movie[:Director].split(',')}.flatten.uniq.sort_by{|director_full_name| director_full_name.split(' ').last} 
=> ["Francis Ford Coppola", "Frank Darabont"] 
+0

nice、しかしsecond second splitは動作しません( –

+0

)さらに詳しい情報がありますか?それに関連するエラーメッセージがありますか? 私はあなたが提供した2つのラインでしかテストできず、動作します。 映画によっては、 –

0

このコードを使用して、役員の一意の名前を得ることができます。映画に複数の取締役がいる場合は、split(',')を使用して個別に処理することができます。

new_xd.map { |movie| movie[:Director].split(',') }.flatten.uniq 
関連する問題