io.gets
では最後に改行文字が入る
Rubyでの標準入力メソッドであるio.gets
を使って文字列を取得すると、最後に改行コードが付与されます。
普段からputs
を使っていると、改行文字が出力されないので気づかずハマってしまいます。
print
を使うと、しっかり\n
が付与されてることが確認できます。
print_test.rb
input = gets
print "print with puts: "
puts input
print "print with p: "
p input
出力結果
> ruby
print with puts: ruby
print with p: "ruby\n"
比較する前にString#chomp
で改行コードを取り除こう
このため直接文字列比較をするとマッチしません。
String#chomp
を使って最後の改行文字を取り除いてから比較しましょう。
gets_and_chomp.rb
input = gets
puts input == "ruby"
puts input.chomp == "ruby"
出力結果
> ruby
false
true