如何重新提示和重复使用用户的输入

时间:2016-01-24 02:58:35

标签: ruby loops prompt

我试图重新提示用户的输入并重复使用它。这是代码示例:

print "Please put your string here!"

user_input = gets.chomp
user_input.downcase!

if user_input.include? "s"
  user_input.gsub!(/s/,"th")
elsif user_input.include? ""
  user_input = gets.chomp
  puts "You didn't enter anything!Please type in something."
  user_input = gets.chomp
else
  print "no \"S\" in the string"
end
puts "transformed string: #{user_input}!"

我的elsif会让用户知道他们的输入是不可接受的,但是从一开始就重新使用他们的输入无效。我该怎么办呢?我应该使用while还是for循环?

3 个答案:

答案 0 :(得分:2)

希望这能解决您的问题:)

while true
  print 'Please put your string here!'
  user_input = gets.strip.downcase

  case user_input
    when ''
      next
    when /s/
      user_input.gsub!(/s/, "th")
      puts "transformed string: #{user_input}!"
      break
    else
      puts "no \"S\" in the string"
      break
  end
end

答案 1 :(得分:0)

您可以在开头循环,不断询问输入,直到它有效。

while user_input.include? "" #not sure what this condition is meant to be, but I took it from your if block
    user_input = gets.chomp
    user_input.downcase!
end

这将继续询问输入,直到user_input.include? ""返回false。这样,您就不必在以后验证输入。

但是,我不确定你在这里要做什么。如果要在输入为空时重新提示,则可以使用条件user_input == ""

对于String.include?

编辑Here's the doc。我尝试运行.include? "",我得到true空输入和非空输入。这意味着总是评估为true

答案 2 :(得分:0)

  user_input = nil    
  loop do
      print "Please put your string here!"
      user_input = gets.chomp
      break if user_input.length>0
  end
  user_input.downcase!
  if user_input.include? "s"
     user_input.gsub!(/s/,"th")      
  else
     puts "no \"S\" in the string"
  end

  puts "transformed string: #{user_input}!"