質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1449閲覧

RUBYのマッチについて

iwasu

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2016/10/06 06:05

###前提・実現したいこと

RUBYでtxtファイル1から読み込んだ日本語の文字列に txtファイル2から読み込んだ日本語の単語が含まれていたら txtファイル3に書き込むをするという処理をしたい。

###発生している問題・エラーメッセージ

if文で文字列に単語が含まれていたら書き込み という処理を行っているのですが if文に入れず書き込みの処理ができない状態。 単語をプログラム内で宣言するとif文に入り処理ができるのですが txtファイルから読み込みを行うと処理ができなくなっている。

###該当のソースコード

RUBY

1# coding: utf-8 2 3#tst.txtの中身 4#これは日本語の文書です 5#これは英語の文章です 6File.open("tst.txt", "r") do |file| 7 file.each_line do |line| 8 line = line.gsub("/(\r\n|\r|\n)/","") 9#word.txtの中身 10#日本語 11File.open("word.txt","r") do |word| 12 word.each_line do |uine| 13 uine = uine.gsub("/(\r\n|\r|\n)/","") 14 15#word = "日本語" 16 if line =~ /#{uine}/ 17 puts "ok" 18 file = File.open("line.txt","a") 19 file.print line 20 file.close 21 end 22 end 23 end 24end 25end

###試したこと
1 .classでStringか調べる 問題なし
2 .encodingでUTF-8になっているか調べる 問題なし
3 ファイルから読み込んでいるuineを word="日本語" としてプログラムで宣言し
line =~ /#{word}/でプログラムを動かす。 if文内に入りokが表示され、書き込まれる。

###補足情報(言語/FW/ツール等のバージョンなど)
RUBYは最新版
TeraPadを使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

gsub("/(\r\n|\r|\n)/","")で、改行文字を取り除いているつもりなのでしょうが、第一引数が文字列なので、正規表現じゃなくてこういう文字列があれば置き換えると言うことになってしまっています。
gsub(/(\r\n|\r|\n)/,"")と、正規表現にすればOKです。gsub(/(\r|\n)/,"")で十分ですが。

Rubyには、文字列末尾の改行文字を取り除く、chomp chomp!というメソッドがあるので、それを使うのが普通です。

Ruby

1line.chomp!

他にも、
・インデントがでたらめ
・word.txtは毎回読むのでなく、最初に読み込んで変数に入れておく方が効率的
・line.txtも毎回オープンするのでなく、最初にオープンしておく方が効率的
またword.txtでやっているようなブロック付きのopenが良い
・printだと改行無しで書かれるので、putsがいい
などの要改善点があります。

投稿2016/10/06 06:45

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問