Ruby:字符串比较问题

时间:2009-12-09 21:09:38

标签: ruby string

我目前正在学习Ruby,除了一个小小的字符串比较问题外,我很享受所有的一切。

answer = gets()

if (answer == "M")  
    print("Please enter how many numbers you'd like to multiply: ")   
elsif (answer. == "A")  
    print("Please enter how many numbers you'd like to sum: ")  
else  
    print("Invalid answer.")  
    print("\n")    
    return 0  
end

我正在做的是我正在使用gets()来测试用户是想要增加他们的输入还是添加它(我已经测试了两个函数;它们都可以工作),我稍后会得到一些更多的输入函数和浮动翻译(也可以)。

当我输入A并且我得到“无效答案”时会发生什么.M同样发生。

这里发生了什么? (我也使用了.eql?(sp),也返回了bubcus)

5 个答案:

答案 0 :(得分:6)

gets返回输入的整个字符串,包括换行符,因此当他们输入“M”并按回车键时,您返回的字符串为"M\n"。要删除尾随换行符,请使用String#chomp,即将第一行替换为answer = gets.chomp

答案 1 :(得分:1)

问题是Ruby在值中包含回车符。

将您的第一行更改为:

answer = gets().strip

您的脚本将按预期运行。

此外,您应使用puts代替两个print语句,因为puts会自动添加换行符。

答案 2 :(得分:0)

你的回答是附加回车。因此输入“A”永远不会等于“A”,而是“A(返回)”

如果您将拒绝行更改为打印(“答案无效。[#{answer}]”),您可以看到此信息。您也可以将比较更改为if(answer.chomp == ..)

答案 3 :(得分:0)

我从未使用过get put我认为如果你点击输入你的变量答案可能会包含'\n'尝试调用.chomp来删除它。

答案 4 :(得分:0)

检查答案时添加换行符...

answer == "M\n"
answer == "A\n"

首先选择你的字符串:answer = gets.chomp