我试图重新提示用户的输入并重复使用它。这是代码示例:
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
循环?
答案 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}!"