Ruby gets()没有返回正确的字符串

时间:2012-08-09 18:19:50

标签: ruby if-statement input gets

我决定在听完所有关于它的所有好事之后给Ruby一个机会,但到目前为止它只给了我一个艰难的时间。很久以前我做了一个搜索引擎"学习Python只是将数据存储在数组中并检查搜索关键字是否在其中,并且我一直试图在Ruby中做同样的事情。

虽然它不像Python那样直观,但我的搜索功能正常运行。但是,我在处理用户输入方面遇到了麻烦。我想检查输入是否等于插入搜索退出,但它不起作用。我真的不知道如何使用获取,因此我假设问题与获取有关。

while true
  puts 'What do you want to do?'
  choice = $stdin.gets

  puts choice # => quit

  if choice == 'quit'
    break
  end
end

if 语句不起作用。我到底做错了什么?出于上帝的缘故,这在 C ++ 中是微不足道的!

我真的很感激一些帮助。 Ruby对我来说太陌生了......谢谢!

2 个答案:

答案 0 :(得分:6)

我认为获取包括输入结尾处的换行符。尝试使用gets.chomp代替

irb(main):001:0> input = $stdin.gets
hello
=> "hello\n"
irb(main):002:0> input = $stdin.gets.chomp
hello
=> "hello"

答案 1 :(得分:1)

davidrac是正确的,您需要切断\n

here

引用答案
  

问题是您在输入中获得了来自用户的换行符。当他们进入“y”时,你实际上正在“y”。您需要在字符串上使用“chomp”方法关闭换行符以使其按预期工作