はじめに
プログラムの外部からデータを入力する標準入力において、標準入力からデータを読み込む際に意識しなければならないのが改行コードです。
改行コードの削除について調べたので、備忘録としてまとめました。
改行コードの概要と種類
改行コードとは、改行を表す制御文字のこと。
テキストファイルは、文字コードが格納されたファイルですが、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メソッドの対象になった文字列に、改行コードが含まれていない場合は、その文字列をそのまま返します。
greeting = "こんにちは\n"
p greeting.chomp # => "こんにちは"
p greeting # => "こんにちは\n"
name = "タロウ"
p name.chomp # => "タロウ"
chomp!メソッド
文字列.chomp!
chomp!は、対象の文字列の末尾から改行コードを取り除きます。(破壊的メソッド)
なお、chomp!メソッドの対象になった文字列に、取り除く改行がなかった場合は nil を返します。
greeting = "こんにちは\n"
p greeting.chomp! # => "こんにちは"
p greeting # => "こんにちは"
name = "タロウ"
p name.chomp! # => nil