0

我正在尝试将正整数分配给项目列表。正整数是用户输入。我正在使用 Ruby 1.9.3-p327

如果用户输入负数(任何 <0)或 0 本身或小数或任何字母数字数据,我在 while 循环中放置了一个条件,要求用户再次输入数字。

我当前在循环中的代码是:-

      input_data = gets.chomp
      while (input_data.to_i <= 0  || input_data.include?(".") || /^[-+]?[0-9]+$/.match(input_data).nil?)
        puts "input_data can't be 0 or a negative integer or in decimal format or alphanumeric. \nPlease input appropriate input_data as a +ve integer "
        input_data = gets.chomp
      end

我相信会有一个更优化的方法来做到这一点。我猜它可能正在使用组合的正则表达式检查。我是 Ruby 中正则表达式的新手。有什么建议么?

谢谢

4

1 回答 1

1

使用正则表达式:

input_data = gets.chomp
while input_data !~ /^[1-9]\d*$/
  puts "input_data can't be 0 or a negative integer or in decimal format or alphanumeric. \nPlease input appropriate input_data as a +ve "
  input_data = gets.chomp
end
于 2013-07-14T11:26:31.803 回答