dポイントプレゼントキャンペーン実施中!

rubyでtxtファイル読み込みの時のプログラムについて教えて欲しいのです。

music.txtファイルの中身が↓2行である時に

ヴォーカリスト : けんた
ギターリスト : まさこ

実行結果を↓

職業 ヴォーカリスト 名前 けんた
職業 ギターリスト 名前 まさこ

にしたいのですが、どのようにしたほうがよいでしょうか?

m ={}
mlist = open("music.txt")
mlist.each{ |line|
line =~ /(\w*)\s*:\s* (\w*)/
m[$1]=$2
}
mlist.close
puts m

このようなプログラムなら思いつくのですが、しかし、実行結果が自分がしたいのとは違います。よろしくお願いします。

A 回答 (1件)

方向性自体はあってると思うんですが、対象ファイルやコードに日本語文字含んでいるのでうまくいかないのかなーと



Ruby1.9.3と2.0だけで動作確認したコードを載せます。
対象ファイルもコードもUTF-8決め打ちにしてあるので、適宜調整してみてください。

元のから殆ど変えずに(出力を整えてはいませんが、nil => nil ではなくなります。)
http://ideone.com/2vWblD

ブロックを使う形(個人的に、元のよりはおすすめ)
http://ideone.com/MBNrCE

ファイルではなく、標準入力から読み込んだ時のサンプル
http://ideone.com/xK1Sj4
    • good
    • 0
この回答へのお礼

ありがとうございます。知らなかった手法が学べました。とても参考になりました。わざわざ別途にソースコードを作っていただいて感謝致します。教えていただいたことが無駄にならぬように、今後も勉強していきたいと思います。

お礼日時:2013/06/13 23:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!