LoginSignup
0
0

More than 3 years have passed since last update.

getsとgets.chompについて

Posted at

Rubyでコード書いてて大したことじゃないけど見落としててハマった話を。

getsとgets.chompの違いはわかっていたつもりだったけど

getsは改行コードが後ろに入っていて、gets.chompは改行コードが入らない、というのは知っていたつもりだったけど、、、

input = gets
array=['cat','cat1','cat2','cat3','dog','tomcat']
array.each do |a|
  puts a.include?(input)
end

とすると、全てfalseで帰ってくる。
冒頭にも書いた通り、getsには改行コードが後ろに入っているので、include?メソッドはcatプラス改行コードで一致するものを探しているので、falseとなるわけです。

input = gets
array=[]
for i in 1..6 do
  array_input=gets
  array << array_input
end
array.each do |a|
  puts a.include?(input)
end

として、配列にcat,cat1,...と前述のコードの配列と同じ要素を順に入力すると最初と最後(catとtomcat)だけtrueで帰ってくる。(これでハマった)
これはfor文で回している部分のgetsで入力した値がcatで終わっているものは最後に改行コードが入るので一致する、ということです。catで終わっていないものは一致しないと認識されています。

解答

input=gets.chompとすれば最初に入力した文字列に改行コードが入らないので意図した結果が得られる。

input = gets.chomp
array=['cat','cat1','cat2','cat3','dog','tomcat']
array.each do |a|
  puts a.include?(input)
end
0
0
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
0
0