rubyで、新字体を旧字体に置換するコードを書きたいです。
とりあえず、置換について解説しているサイトを参考に書いたのが、
hash = {'伝'=>'傳','礼'=>'禮'}
"左伝における礼".gsub!(/[伝]|[礼]/, hash)
というコードです。
これは期待通りに実行できました。
ただ、改善したい点として、
まず、置換すべき字を、ハッシュ内と正規表現部分に二度書いているのは二度手間なのでハッシュのキーの文字を自動的に置換するようにできないでしょうか。
次に、実際に使う際には置換対象データが数万字以上の規模になると予想されるので、上に書いたようなコードではなく、ファイルからデータを読み込む、
hash = {'伝'=>'傳','礼'=>'禮'}
a=[]
File.open("saden.txt", "r"){|f|
f.each_line{|line|
a<<line.gsub(/[伝]|[礼]/, hash)}
}
File.open("saden_new.txt", "w"){|f|
a.each{|s| puts(s)}
}
というようにファイルから一行ずつ読み込んで処理する形にしたいのす。
上記のコードも実行できましたが、「ファイルを開いて、処理して、書き込む」という一連の処理について解説したサイトが見当たらず、読み込みについて解説したサイトと書き込みについて解説したサイトの内容を混ぜて書いたので、もっと効率のいい(配列を介さずに処理する)方法があるのではないかと思います。
また、ハッシュも実際に使うときには数百字以上になるはずなので、これも別ファイルにできないものかと思います。
以上の点のほか、お気づきの点がありましたら教えてください。
ここで、処理後の文字列を新しいファイルに書き込むにはどうしたらいいのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/11 09:19
2020/04/11 09:50