- ベストアンサー
文書から単語を検索したい・・・
私はRuby初心者になります。 今、私は文字列(文)から文字列(単語)を検索させるプログラムを組みたいのですが、1つ分からない点が出てきたので質問させていただきました。 内容なのですがとりあえず以下のようなプログラムを本などで調べ組上げました。 *********************************************************** open("docu.txt"){|io| puts io.read io.pos = 0 File.readlines("word.txt").each{|line| puts line line.chomp! p io.read.index(line) } } *********************************************************** 【docu.txtの内容】 aiueokakikukekosasisuseso 【word.txtの内容】 keko *********************************************************** 結果: aiueokakikukekosasisuseso keko 11 これならちゃんと動いてくれました。 ただ、これらのテキストの内容を以下のような日本語にするとうまくいきません。 *********************************************************** 【docu.txtの内容】 あいうえおかきくけこさしすせそ 【word.txtの内容】 けこ *********************************************************** 結果: あいうえおかきくけこさしすせそ けこ nil やはり英数字でないと、うまくいかないようです。 こういった「ひらがな」や「漢字」でも検索してくれるようにするには、どういった作業が必要になるのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
文字コードがおかしいのかと思いましたけど、nil になるのが不審。 OSの種類とRubyのバージョンはなんですか? ruby -v でバージョンがわかります。 1.8.x の場合は、p $KCODE というスクリプトを実行した結果はどうなりますか? 1.9.x の場合は、p Encoding.default_external というスクリプトを実行した結果はどうなりますか? docu.txt と word.txt のデータの文字コードはなんですか? 問題点とは関係ありませんが、こういうほうがいいですね。 open("docu.txt"){|io| str = io.read puts str File.readlines("word.txt").each{|word| puts word word.chomp! p str.index(word) } }
その他の回答 (1)
- ryu_chan
- ベストアンサー率37% (69/186)
質問者さんが書かれたコードをそのままコピペして実行すると、 Ruby 1.8.6、Ruby 1.8.7ともに あいうえおかきくけこさしすせそ けこ 16 という意図通りの結果が出ました。 Ruby 1.9.1で実行すると、 あいうえおかきくけこさしすせそ けこ 8 という結果になりました。 OSは、Windows XP SP2です。
お礼
ご回答いただき感謝いたします。 私Linuxを使ってるのですが、やはり文字コードがおかしかったようです。
お礼
OSはLinuxでRubyのバージョンは1.8です。 色々試した結果、やはりdocu.txtとword.txtの文字コードが違ったみたいです。 ちゃんと合わせてやると動いてくれました。 ふむふむ そんな書き方ができるんですね! 勉強になりました^^ ご丁寧な回答感謝いたします。