4
1

More than 3 years have passed since last update.

【Ruby】getsメソッドの入力値は改行付きの文字列である

Last updated at Posted at 2020-03-27

背景

某転職テストのスキルチェックを受けた結果がボロボロで悔しくなり、某スキルチェックサイトで毎日コーディングして訓練しようと思い始めた所、あまりにも単純な問題で詰まり悲しみに包まれかけたのでアウトプットします。

また、Railsエンジニア志望なのでRubyのコードを書いていきます。

どことは書いてはないですがスキルチェックの内容は外部流出厳禁なので、一応似たような形に書き換えてます。

getsメソッド

getsメソッドはユーザーがキーボードで入力した値を文字列として取得するメソッド。

という説明自体は間違っていないのですが、

sample.rb
# 入力した値が"Hello"だった場合、”World"を出力しましょう。
input = gets #Helloを入力する
if input == "Hello"
  puts "World"
else
  puts "Helloではありません"
end
> "Helloではありません"

のように、間違いなくHelloを入力しているのにfalseが返ってくるんですね。えぇー!?って思いますやん。
調べた所、getsメソッドは正確に言うと、

入力した値の末尾に改行が付与された文字列として取得するメソッド

となります。

ターミナル(irb)
irb(main):001:0> input = gets
Hello
=> "Hello\n" #末尾に\nが付く

マジか…:sob:
このように1分で解けそうな問題なのに原因が分からず、結局50分掛かりました。ぐやじい〜〜

と言うことで、今回の問題のソリューションはこれ。

sample.rb
# 入力した値が"Hello"だった場合、”World"を出力しましょう。
input = gets.chomp # ここー!!!!
if input == "Hello"
  puts "World"
else
  puts "Helloではありません"
end
> "World"

chompを付けることで改行をなくせるんですね。
基礎中の基礎とはいえ普段使わないメソッドだから勉強になりました:hugging:

4
1
0

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
4
1