0

アイテムのリストに正の整数を割り当てようとしています。正の整数はユーザー入力です。Ruby 1.9.3-p327 を使用しています

ユーザーが負の数 (<0 のすべて) または 0 自体、10 進数、または任意の英数字データを入力した場合、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 に答える