文字列から末尾の改行文字を取り除く

ファイルなどから文字列を読み込んだ場合など文字列に含まれる改行文字を取り除いて処理したい場合があります。改行文字は「\r」の他に「\r\n」「\n」などがあり 1 つ 1 つ検索して削除するのは面倒です。ここでは Ruby で文字列の末尾に含まれる改行文字を取り除く方法を解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 26 日更新)

文字列から末尾の改行文字を取り除く

文字列から末尾の改行文字を取り除く方法です。 String クラスで用意されている chomp メソッドを使います。

chomp(rs = $/)

引数に指定した改行文字が文字列の末尾に含まれていた場合、取り除いて新しい文字列を返します。引数に \n を指定するか省略した場合には末尾にある \r, \r\n, \n のすべての改行文字が削除されます。

引数に空文字を( "" )を指定した場合は、文字列の末尾にある連続する改行コード \r\n, \n が削除された新しい文字列を返します。

具体的には次のように記述します。

str = "Hello\n"
print(str.chomp)  # Hello

文字列の末尾にある \n が削除された新しい文字列が返されました。

また改行文字が連続していた場合ですが、引数に空文字を指定すると連続する改行文字を取り除きます。

str = "Hello\n\n"
puts(str.chomp)  # Hello\n

str = "Hello\n\n"
puts(str.chomp(""))  # Hello

引数を省略した場合は、末尾にある改行文字が一つしか削除されません。

なお chomp メソッドの代わりに String クラスの chomp!メソッドを使った場合は末尾の改行文字を取り除いた結果を新しい文字列として返すのではなく、元の文字列を書き換えます。

chomp!(rs = $/)

具体的には次のように記述します。

str = "Hello\n"
print(str.chomp!)  # Hello

str.chomp! メソッドの場合は、新しい文字を返すのではなく元の文字列そのものから削除します。

サンプルコード

では簡単なサンプルで試してみます。

# encoding: UTF-8

str = "Hello\n"
print("[",str.chomp,"]")

str = "Hello\n\n"
print("[",str.chomp,"]")

str = "Hello\n\n"
print("[",str.chomp(""),"]")

実行結果は次のようになります。

末尾に含まれる改行文字を削除する

-- --

Ruby で文字列の末尾に含まれる改行文字を取り除く方法を解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。