Ruby 如何验证用户输入变量是否为特定字符串?

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

我对编程非常陌生,至少是面向对象的,所以请温柔一点:)

我正在尝试创建一个预算计划,但在识别字符串时遇到了问题。我有一个名为payperiod的变量,非常简单,它将用于保存每周、每月等的字符串值。我在这里做错了什么


您忘记了按返回键提交答案:

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