puts "Enter the String for checking Character Length"
@character = gets.chomp
puts "Are you want to exclude spaces from the enterede string?(yes/no)"
@options = gets.chomp
if @options == "yes" or @options == "Yes"
@character = @character.gsub(" ", "")
puts "Are you want to change the case of a string?(upper/lower)"
@case_choice = gets.chomp
if @case_choice == "upper"
@character = @character.upcase
puts "@result ==== #{@character.inspect}"
@character = @character.length
puts "@character === #{@character.inspect}"
elsif @case_choice == "lower"
@character = @character.downcase
puts "@result ==== #{@character.inspect}"
@character = @character.length
puts "@character === #{@character.inspect}"
else
puts "Please enter valid options"
end
elsif @options == "no" or @options == "No"
if @case_choice == "upper"
@character = @character.upcase
puts "@result ==== #{@character.inspect}"
@character = @character.length
puts "@character === #{@character.inspect}"
elsif @case_choice == "lower"
@character = @character.downcase
puts "@result ==== #{@character.inspect}"
@character = @character.length
puts "@character === #{@character.inspect}"
else
puts "Please enter valid options"
end
else
puts "Please enter valid options"
end
如果用户输入了错误的选项,那么它将进入初始阶段。例如,如果用户输入' jhgh'而不是'是'意味着它应该进入初始阶段。我怎么能这样做?
答案 0 :(得分:1)
使用while
循环。像这样:
while !['yes', 'no'].include?(@options.downcase) do
puts "Please enter valid options"
@options = gets.chomp
end
if @options.downcase == 'yes'
# ...
elsif @options.downcase == 'no'
# You could also just write `else` here
# Since we already know that this will always be true
# ...
end
相同的模式可用于@case_choice
输入。此外,无需重复此逻辑两次(在初始if
语句的每个分支内);您只需将放在第一个if
语句之后,以避免重复。
答案 1 :(得分:-1)
默想:
loop do
puts 'Enter the string to check character length'
characters = gets.chomp
loop do
puts 'Do you want to exclude spaces from the entered string? (y/n)'
spaces_allowed = gets.chomp.downcase
if spaces_allowed == 'y' || spaces_allowed == 'n'
characters = characters.delete(' ') if spaces_allowed == 'n'
break
end
puts 'Please enter valid spaces_allowed'
end
loop do
puts 'Change the case of a string to upper or lower case? (u/l)'
case_choice = gets.chomp.downcase
if case_choice == 'u' || case_choice == 'l'
characters = case case_choice
when 'u'
characters.upcase!
when 'l'
characters.downcase!
end
break
end
puts 'Please enter valid case.'
end
puts "result: #{characters}"
puts "characters: #{characters.length}"
puts 'Run again? (y/n)'
break if gets.chomp.downcase == 'n'
end
这更接近编写“Ruby方式”的代码。还有很多其他方法可以写出它的某些方面,但为了清晰和简单,我选择这样做。