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”方法关闭换行符,以使其按预期工作