質問: File.open("line.txt","a") file.print line file.close end end end end end ``` ### 試したこと 1 .classでStringか調べる 問題なし 2 .encodingでUTF-8になっているか調べる 問題なし 3 ファイルから読み込んでいるuineを word="日本語" としてプログラムで宣言し line =~ /#{word}/でプログラムを動かす。 if文内に入りokが表示され、書き込まれる。 ### 補足情報(言語/FW/ツール等のバージョンなど) RUBYは最新版 TeraPadを使用
回答: `gsub("/(\r\n|\r|\n)/","")`で、改行文字を取り除いているつもりなのでしょうが、第一引数が文字列なので、正規表現じゃなくてこういう文字列があれば置き換えると言うことになってしまっています。 `gsub(/(\r\n|\r|\n)/,"")`と、正規表現にすればOKです。`gsub(/(\r|\n)/,"")`で十分ですが。 Rubyには、文字列末尾の改行文字を取り除く、`chomp` `chomp!`というメソッドがあるので、それを使うのが普通です。 ``` line.chomp! ``` 他にも、 ・インデントがでたらめ ・word.txtは毎回読むのでなく、最初に読み込んで変数に入れておく方が効率的 ・line.txtも毎回オープンするのでなく、最初にオープンしておく方が効率的 またword.txtでやっているようなブロック付きのopenが良い ・printだと改行無しで書かれるので、putsがいい などの要改善点があります。