目次(まとめ)
◾️ 改行コードは、chompメソッドで削除する
◾️ 場合によって、"chomp" と "chomp!" を使い分ける
こんにちは、みっちゃんです
Rubyを使ってテキストファイルを読み込むときに、文末にある改行コードを削除したい場合はどうしたらいいですか?
Rubyでは、chompメソッドを使って、改行コードを削除することができます。
今回の記事では、テキストファイルを読み込んで、改行コードを削除して出力する方法を紹介します。
改行コードは、chompメソッドで削除する
ここでは、以下のようなテキストファイル(input.txt)をRubyで読み込むプログラムを例にして解説します。
# input.txt
Hello, world !!
このテキストファイルを読み込むプログラムは、以下のような例(sample.rb)になります。
# sample.rb infile = open("input.txt", "r") while line = infile.gets p line end
このプログラムをターミナル上などで実行すると、以下のように出力されます。
$ ruby sample.rb
"Hello, world !!\n"
このように、テキストファイルでは見えないですが、改行コードである "\n" が文末に表示されているのがわかります。
これを削除するためには、"chomp" メソッドを使って、以下のようにプログラミングします。
# sample-2.rb infile = open("input.txt", "r") while line = infile.gets p line.chomp end
これを実行すると、以下のように、改行コードが削除されて表示されます。
$ ruby sample.rb
"Hello, world !!"
場合によって、"chomp" と "chomp!" を使い分ける
Rubyのメソッドには、「破壊的メソッド」と「非破壊的メソッド」という2種類があり、"chomp" メソッドの場合にも2種類があります。
破壊的メソッド:chomp!
非破壊的メソッド:chomp
破壊的メソッドを使うと、その変数そのものが変更されることになります。
例えば上の例では、以下のように "line.chomp!" とすると、それ以降で "line" という変数内に改行コードが消えることになります。
# sample-3.rb infile = open("input.txt", "r") while line = infile.gets p line.chomp! #=> "Hello, world !!" p line #=> "Hello, world !!" end
一方で、非破壊的メソッドを使うと、その変数そのものは変更されません。
つまり、以下のように "line.chomp" としても、それ以降で "line" という変数には改行コードが残った状態になります。
# sample-4.rb infile = open("input.txt", "r") while line = infile.gets p line.chomp #=> "Hello, world !!" p line #=> "Hello, world !!\n" end