【问题标题】:Ruby gets() not returning correct string [duplicate]Ruby gets()没有返回正确的字符串[重复]
【发布时间】:2012-08-07 01:02:17
【问题描述】:

在听了 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 对我来说太陌生了……谢谢!

【问题讨论】:

    标签: ruby if-statement input gets


    【解决方案1】:

    我认为gets 在输入末尾包含换行符。尝试改用gets.chomp

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

    【讨论】:

      【解决方案2】:

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

      引用here的答案

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-14
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        • 2013-10-07
        相关资源
        最近更新 更多