我正在使用Rails 4.2.7。我有这个简洁的功能,修剪(剥离)我的数组中的字符串
data_cols = data_cols.collect{|x| x.strip || x }
但是,如果数组中的一个元素为零,则上述内容会崩溃。如何修改上述内容以使其不适用于nil元素?
答案 0 :(得分:4)
如果您想完全从数组中删除nil
值,可以使用compact
:
cols.compact.map { |col| col.strip }
# or
cols.compact.map(&:strip)
如果你想保留所有值,但只对非零值进行操作,你可以简单地使用nil-guard:
# straightforward, no magic, works across rubies:
cols.map { |col| col && col.strip }
# a wee dose of magic in ruby 2.3 (safe navigation operator)
cols.map { |col| col&.strip }
最后,如果你想要更加惯用和红宝石般的风格,你可以使用鸭子打字,让对象自己整理,无论他们是否可以&#34;剥离&#34; ped&#34;:< / p>
cols.map { |col| col.respond_to?(:strip) ? col.strip : col }
答案 1 :(得分:0)
答案 2 :(得分:0)
取决于您是否仍需要结果数组中的nil值。如果没有,您可以使用compact:
data_cols = data_cols.compact.collect{|x| x.strip || x }
compact将删除数组中的所有nil值。
如果您想保留零值,则需要更改条件:
data_cols = data_cols.compact.collect{|x| x ? x.strip : nil }