我是Ruby的新手,一直都在关注这个问题.假设我有这样一个数组:

arr = [1, 2, 's', nil, '', 'd']

我想从中删除nil和空白字符串,也就是说,最终数组应该是:

arr = [1, 2, 's', 'd']

我试了compact次,但结果是:

arr.compact!
arr #=> [1, 2, 's', '', 'd'] doesn't remove empty string.

我想知道在Ruby中是否有一种聪明的方法可以做到这一点.

推荐答案

你可以这样做:

arr.reject { |e| e.to_s.empty? } #=> [1, 2, "s", "d"]

nil.to_s => ''.

Ruby相关问答推荐

Ruby将字符串中的反斜杠替换为双反斜杠

Ruby符号前面的-是什么意思?

如何判断一个对象在 Ruby 中是否可迭代?

Ruby $:.unshift File.dirname(__FILE__)

如何在Ruby中从字符串中go 除前导和尾随引号

判断文件是否包含字符串

Ruby:如何判断字符是大写还是小写

从索引到字符串结尾的子字符串的Ruby成语

使用 bundler 安装较新版本的 bundler

如何绘制 git repo 的代码行历史记录?

Puppet/Facter无法检索事实 fqdn:如何修复或规避?

将 Ruby 哈希转换为 YAML

include_examples和it_behaves_like有什么区别?

Ruby中的file.open、open和IO.foreach,有什么区别?

是否有更简单的(单行)语法来别名一个类方法?

如何理解 class_eval() 和 instance_eval() 的区别?

不能在windows上安装thin

Ruby:捕获异常后继续循环

在 Jekyll 中使用 Live Reload

直接访问实例变量与使用访问器方法