清除数组中的空字符串

Dre*_*rew 10 ruby arrays

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

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

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

fl0*_*00r 36

有一个简短的表格

array.delete_if(&:empty?)
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用Rails,如果其中一个值为nil,则array.delete_if(&:blank?)是避免NoMethodError的更好选项. (2认同)
  • `array.compact.delete_if(&:empty?)`将处理纯Ruby中的nil和空白. (2认同)

sid*_*ney 6

您可以使用此方法:

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

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


ste*_*lag 5

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

ar = ['a', '', 2, 3, '']
p ar.delete('')  #=> ""
p ar             #=> ["a", 2, 3]
Run Code Online (Sandbox Code Playgroud)