Ruby 如何验证用户输入变量是否为特定字符串?
我对编程非常陌生,至少是面向对象的,所以请温柔一点:) 我正在尝试创建一个预算计划,但在识别字符串时遇到了问题。我有一个名为payperiod的变量,非常简单,它将用于保存每周、每月等的字符串值。我在这里做错了什么Ruby 如何验证用户输入变量是否为特定字符串?,ruby,input,Ruby,Input,我对编程非常陌生,至少是面向对象的,所以请温柔一点:) 我正在尝试创建一个预算计划,但在识别字符串时遇到了问题。我有一个名为payperiod的变量,非常简单,它将用于保存每周、每月等的字符串值。我在这里做错了什么 您忘记了按返回键提交答案: 2.1.0 :001 > mystring = gets Monthly => "Monthly\n" 2.1.0 :002 > mystring.chomp => "Monthly" 2.1.0 :003 > cor
您忘记了按返回键提交答案:
2.1.0 :001 > mystring = gets
Monthly
=> "Monthly\n"
2.1.0 :002 > mystring.chomp
=> "Monthly"
2.1.0 :003 > correct_string = gets.chomp
Monthly
=> "Monthly"
gets方法甚至可以获得“enter”键盘键。这意味着特殊字符\n将添加到字符串的末尾,因为该字符表示“回车”键盘键
因此,当您输入单词“每月”、“每周”或“每两周”时,脚本真正关注的是“每月”、“每周”或“每两周”
因此,您的脚本必须使用chomp方法(由JCorcuera进行Highlite)来删除该字符
如果您想使用chomp方法,您的脚本将如下所示
payperiod = gets
if payperiod.chomp == "Monthly"
puts "You are paid monthly."
elsif payperiod.chomp == "Weekly"
puts "You are paid Weekly"
elsif payperiod.chomp == "Fortnightly"
puts "You are paid every two weeks!"
else
puts "Invalid option!"
end
如果不想使用chomp,可以附加“\n”
gets代表get字符串。它返回用户输入的所有内容,包括他们没有意识到自己正在输入的内容。gets.chomp删除结尾处的所有空白,这样它将只返回所需的字符串。如果用户输入“每月”、“每月”或“每月”,则最好将其降级 用户输入:每月
mystring1 = gets
=> 'Monthly/n'
mystring2 = gets.chomp
=> 'Monthly'
mystring3 = gets.chomp.downcase
=> 'monthly'
mystring1 == 'monthly'
=> false
mystring1 == 'monthly'
=> false
mystring1 == 'monthly'
=> true
另外,如果你想…elsif或至少语法正确。尚不清楚您声称的错误是什么。所以chomp存储了变量?@user370308 No.chomp()删除了末尾的回车字符,因此您的输入将是干净的。
payperiod = gets
if payperiod == "Monthly\n"
puts "You are paid monthly."
elsif payperiod == "Weekly\n"
puts "You are paid Weekly"
elsif payperiod == "Fortnightly\n"
puts "You are paid every two weeks!"
else
puts "Invalid option!"
end
mystring1 = gets
=> 'Monthly/n'
mystring2 = gets.chomp
=> 'Monthly'
mystring3 = gets.chomp.downcase
=> 'monthly'
mystring1 == 'monthly'
=> false
mystring1 == 'monthly'
=> false
mystring1 == 'monthly'
=> true