1
0

More than 3 years have passed since last update.

Rubyにおける改行コードの削除について chomp, chomp!

Last updated at Posted at 2021-03-19

はじめに

プログラムの外部からデータを入力する標準入力において、標準入力からデータを読み込む際に意識しなければならないのが改行コードです。
改行コードの削除について調べたので、備忘録としてまとめました。

改行コードの概要と種類

改行コードとは、改行を表す制御文字のこと。
テキストファイルは、文字コードが格納されたファイルですが、1行の終わりの位置に必ず改行コードが入っています。
標準入力でテキストデータ(文字列)を受け取る際、改行コードを行の区切りとみなすことができます。
試しに、ターミナルのirbモードで標準入力を実行すると、以下のように受け取った文字データには改行コード(\n)が含まれています。

ターミナル
irb(main):001:0> line = gets
おはよう
=> "おはよう\n"

改行コードはOSによって次のように異なります。

  • \n:Unix系OS全般
  • \r\n:Windows系OS
  • \r:古いMac OS(9以前)

改行コードの削除

rubyで改行コードを削除する場合、以下2つのメソッドが使えます。

chompメソッド

文字列.chomp
chompは、対象の文字列の末尾から改行コードを取り除いた文字列を生成して返します。
レシーバである文字列自体から改行コードを取り除くわけではありません。
なお、chompメソッドの対象になった文字列に、改行コードが含まれていない場合は、その文字列をそのまま返します。

Ruby
greeting = "こんにちは\n"
p greeting.chomp  # => "こんにちは"
p greeting  # => "こんにちは\n"

name = "タロウ"
p name.chomp  # => "タロウ"

chomp!メソッド

文字列.chomp!
chomp!は、対象の文字列の末尾から改行コードを取り除きます。(破壊的メソッド)
なお、chomp!メソッドの対象になった文字列に、取り除く改行がなかった場合は nil を返します。

Ruby
greeting = "こんにちは\n"
p greeting.chomp!  # => "こんにちは"
p greeting  # => "こんにちは"

name = "タロウ"
p name.chomp!  # => nil

参考

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0