清除数组中的空字符串

我正在处理一堆由字符串组成的数组,很多次我写过.delete_if { |str| str.empty? } .delete_if { |str| str.empty? }

现在,我知道我可以自己将这个方法添加到数组类中,但是我希望有一种内置的方法来实现这一点,而不需要在基类中添加非标准方法。 与向基类添加方法一样有趣的是,出于可维护性的原因,我不想这样做。

有没有内置的方法来处理这个?

有一个简短的表格

 array.delete_if(&:empty?) 

您可以使用此方法:

  1.9.3p194 :001 > ["", "A", "B", "C", ""].reject(&:empty?) => `["A", "B", "C"]` 

请注意,如果您只需要从nils中清除数组,则可以使用compact方法。

好吧,有Array.delete 。 它会返回已删除的内容(如果没有删除则返回nil),但是感觉很笨拙。 但它确实在非字符串元素上传递并且不会失败:

 ar = ['a', '', 2, 3, ''] p ar.delete('') #=> "" p ar #=> ["a", 2, 3] 

你可以这样做

 ar = ['a', '', 2, 3, ''] ar = ar.select{|a| a != ""} 

我希望这对你有用

你可以使用.select! 但是你仍然会遇到同样的问题。

您可以创建实用程序类,而不是修改数组。

您可以尝试以下解决方案。 我希望它会帮助你。

array = [“”,“”,nil,nil,2,3] array.delete_if(&:blank?)=> [2,3]

如果你还想删除nil:

 arr = ['',"",nil,323] arr.map!{|x|x==''?nil:x}.compact! => [323] 

地图,三元运算符,紧凑