红宝石gets()函数返回不正确的字符串(Ruby gets() not returning cor

2019-07-30 21:54发布

我决定给红宝石一走到今天听到所有的伟大的事情了它们后,但到目前为止,只给我带来了困难时期。 很久以前,我做了一个“搜索引擎”,同时学习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是如此陌生,我...谢谢!

Answer 1:

我认为被包括在输入结束的换行符。 尝试使用gets.chomp代替

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


Answer 2:

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

从引用的答案在这里

问题是你是从用户的输入得到一个换行符。 而他们正在输入“Y”你实际上得到“Y \ N”。 您需要终日啃食新行的时候使用“格格”的方法对字符串得到它为你工作打算



文章来源: Ruby gets() not returning correct string