确保用户输入数组中的所有值都在1到10之间

时间:2015-06-03 20:39:01

标签: ruby validation

我正在尝试根据用户输入定义一个数组,并希望确保每个值介于1和10之间。我该怎么做?

所以我现在正在使用它。

"start": "./node_modules/.bin/knex migrate:latest && node server.js"

我希望用户只输入1到10之间的值。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容来执行此操作:

def verify(input)
    (1..10).to_a.include?(input)
end

#input is user input
if verify(input)
  #do some stuff
else
  #don't do stuff
end

答案 1 :(得分:0)

...所以你知道,gets.chomp没有返回一个数组。它返回一个String。像这样的东西会给你你想要的数组:

array = gets.chomp.split(/\D/).map { |e| e.to_i }

将其从单个字符串(恰好包含, - 分隔值)转换为数字数组。

puts 'The array you entered was invalid!' if array.any? { |item| !(1..10).include?(item) }

通过并检查any的{​​{1}}值是否返回true,当且仅当范围!(1..10).include?(item)(包括)包含[1,10]时才返回true。如果是,则打印出item

但是,看起来你想要做的是物理上阻止用户在控制台中输入The array you entered was invalid!11之类的数字,这在(至少在纯Ruby中)是不可能的。你能得到的最接近的是在事后验证输入,这就是它的作用。如果你想让他们继续进入数组直到他们输入的数组有效,请查看Ruby的各种循环。

请注意,@ locoboy的答案适用于单个数字,但在尝试验证整个数组或12的直接结果时会失败。