はじめに
こんにちは、今回はRubyのgetsメソッドとchompメソッドについてお話します。
この2つのメソッドは、ユーザーからの入力を処理するときによく使われますが、意外と知られていない細かい部分もあるので記事にしようと思いました
getsメソッドとは
まずは基本的なgetsメソッドの解説をしていきます
getsメソッドは、ユーザーの入力を受け取るためのメソッドです。プログラムが実行されると、キーボードから入力を受け取り、その値を文字列として返します。下の例を見てみましょう。
input = gets
puts "あなたが入力したのは: #{input}です"
# (入力)こんにちは
# あなたが入力したのは:こんにちは
# です
このコードを実行すると、コンソール上で入力を待ちます。例えば「こんにちは」と入力してEnterキーを押すと、上記のように表示されます。
本来であれば、「あなたが入力したのは: こんにちはです」のように出力したいのですが、getsのみの場合だとこんにちはのうしろに改行(\n)が入ります。
getsが改行コードを含む理由
このように改行をするケースのほうが少ないのにどうして入力内容の後に改行(\n)が入るのでしょうか。すこし深堀してみましょう
ここで注意すべき点は、getsメソッドは入力値と一緒に改行コード(\n)も含めて返すということです。
getsでの入力後、コンソール上でEnterキーを押すと、入力された文字列に改行が自動的に追加されるのです。実際に次のようなコードで確認できます。
input = gets
p input
# (入力)こんにちは
# "こんにちは\n"
改行コードが含まれるのは、入力が完了したことを示すEnterキーが押されたタイミングで、それも入力として扱われるからです。
しかし、ほとんどのケースでは改行をそのまま使いたくない場合が多いです。
chompメソッドとは?
そこで登場するのが、chompメソッドです。
chompメソッドは、文字列から末尾の改行コード(\n)を取り除くメソッドです。getsで入力されたデータをきれいにしたいときに非常に便利です。
input = gets.chomp
puts "あなたが入力したのは: #{input}です"
# (入力)こんにちは
# あなたが入力したのは:こんにちはです
多くの場合、入力された値をそのまま使うケースが多いためgetsとchompを合わせて使うケースが多く、単体ではなく合わせて覚えている人も多いのではないでしょうか。
まとめ
-
getsはユーザーの入力を取得するためのメソッドであり、入力に改行が含まれる。 -
chompメソッドを使うことで、getsで取得した文字列から改行を取り除くことができる。 -
gets.chompの組み合わせは、入力を扱うときの標準的なパターン。
このように、getsとchompの組み合わせを使うことで、ユーザーからの入力を適切に処理できます。