1

在听到所有关于它的好消息后,我决定今天试一试 Ruby,但到目前为止,它只是让我很难过。很久以前,我在学习 Python 时做了一个“搜索引擎”,它只是将数据存储在一个数组中并检查搜索关键字是否在其中,我一直在尝试在 Ruby 中做同样的事情。

虽然它不像 Python 那样直观,但我让搜索功能正常工作。不过,我在处理用户输入时遇到了麻烦。我想检查输入是否等于insertsearchquit,但它不起作用。我真的不知道如何使用gets,所以我假设这个问题与gets 相关。

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

  puts choice # => quit

  if choice == 'quit'
    break
  end
end

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

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

4

2 回答 2

6

我认为获取包括输入末尾的换行符。尝试gets.chomp改用

irb(main):001:0> input = $stdin.gets
hello
=> "hello\n"
irb(main):002:0> input = $stdin.gets.chomp
hello
=> "hello"
于 2012-08-09T18:21:56.457 回答
1

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

从这里引用答案

问题是您从用户那里得到一个换行符。当他们输入“y”时,您实际上得到的是“y\n”。您需要使用字符串上的“chomp”方法将换行符剔除,以使其按预期工作

于 2012-08-09T18:25:33.180 回答