Ruby 如何验证数组中是否有空值或数字

Ruby 如何验证数组中是否有空值或数字,ruby,arrays,string,Ruby,Arrays,String,我想检查数组中是否有值或为空。下面的案例有一些空值 a = [1,2,3,"","","",7] 我有如下代码,但它不工作 a.each do |f| if [f].empty? puts "array is empty" else puts f end end 数组不是空的,所以a.empty?将返回false 但是,我们可以检查每个元素,看看是否有?这些都是空的。我们必须仔细检查那些响应为空的东西?作为一种方法。这将回答问题,如果有的话。否则,我们将最终得到

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

 a = [1,2,3,"","","",7]
我有如下代码,但它不工作

a.each do |f|
  if [f].empty?
    puts "array is empty"
  else
    puts f
  end
end
数组不是空的,所以a.empty?将返回false

但是,我们可以检查每个元素,看看是否有?这些都是空的。我们必须仔细检查那些响应为空的东西?作为一种方法。这将回答问题,如果有的话。否则,我们将最终得到一个命名错误,调用1.empty时会发生这种情况?比如说

与您的代码类似的代码:

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

我假设您想检查数组元素是空的还是空的


Maria,[f]永远不会为空,因为它始终包含a的一个元素,即使该元素是空字符串,或者,如果a的值为nil,则为nil。我想你想要的是如果f是a?字符串和f.empty?。。。如果你想知道a是否包含任何空字符串,你可以这样做:a.select{e | e.is_a?String和e.empty?}.any?@vgoff提出了两个建议,这两个建议代表了我在前面的评论中提出的改进:使用any?而不是选择任何删除任何?最后,用更一般的respond_to代替is_a?字符串。如何在循环中使用它,因为我想知道某个特定的值是否为空…您的代码检查整个数组并打印结果?如果要检查特定的元素,您不必使用循环。例如,如果您想检查[3],可以通过索引拉取该元素并进行检查。你问的是哪种代码,有吗?代码可能只检查第一个返回true的,然后退出块,无需继续,因为您已经得到了答案。。如果一个是真的,那么问题是什么?答案是肯定的。在第二段代码中,我提供了一些代码来镜像您给定的不起作用的代码。回答得好,Victor。@vgoff有些代码是有效的……谢谢。我知道这不是代码复查。但是,这是一个贫穷的国家吗?如果块中的任何结果返回true,则方法返回true。有了puts,就可以保证?将始终返回false。您还可以在语义上对块使用each方法。你们所依赖的是副作用,而不是任何副作用的实际结果?方法在任何情况下,您关于它“返回true/false”的评论都是误导性的。@vgoff:您的评论非常有效。非常感谢
a.each do |e|
  if e.respond_to?(:empty?) && e.empty? 
    puts "Nothing here."
  else
    puts e
  end
end
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