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

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

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

while true puts 'What do you want to do?' choice = $stdin.gets puts choice # => quit if choice == 'quit' break end end 

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

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

我认为获取包括输入结束时的换行符。 尝试使用gets.chomp

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

davidrac是正确的,你需要砍掉\n

从这里引用答案

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