如何验证数组中是否包含空值或数字

时间:2014-10-19 04:10:57

标签: ruby arrays string

我想检查数组中是否有值或者是否为空。下面的案例有一些空值。

 a = [1,2,3,"","","",7]

我的代码如下,但它不起作用。

a.each do |f|
  if [f].empty?
    puts "array is empty"
  else
    puts f
  end
end

2 个答案:

答案 0 :(得分:1)

a = [1,2,3,"","","",7]

puts a.empty?
puts a.any? { |e| e.respond_to?(:empty?) && e.empty? }

数组根本不是空的,因此a.empty?将返回false。

但是,我们可以检查每个元素,以确定any?是否为空。我们必须小心检查那些响应empty?作为方法的内容。如果有的话,这将回答这个问题。否则,我们最终会得到一个NoMethodError,例如在调用1.empty?时会发生这种情况。

与您类似的代码:

a.each do |e|
  if e.respond_to?(:empty?) && e.empty? 
    puts "Nothing here."
  else
    puts e
  end
end

答案 1 :(得分:0)

我假设您要检查数组元素是否为blank or nil

a = [1,2,3,"","","",7]
a.any?{|i| puts i.to_s.empty? || i.nil?} #=> returns true/false
a.any?{|i| puts (i.to_s.empty? || i.to_s.nil?) ? "Empty":"Not Empty"} #=> prints empty/not empty