Ruby 通过split()将空字符串转换为nil

Ruby 通过split()将空字符串转换为nil,ruby,split,string,Ruby,Split,String,我有一个要拆分的字符串,如下所示: foo, bar, baz, etc = str.split(',') 例如,如果str等于“一、二、四”,则baz最终等于“”(一个空字符串)。如果参数是空字符串,是否有简单的方法循环这些参数以将其转换为nil?还是我被困在做以下事情 foo = nil if foo.blank? bar = nil if bar.blank? baz = nil if baz.blank? etc = nil if etc.blank? 我可以向您推荐以下解决方案:

我有一个要拆分的字符串,如下所示:

foo, bar, baz, etc = str.split(',')
例如,如果
str
等于“一、二、四”,则
baz
最终等于“”(一个空字符串)。如果参数是空字符串,是否有简单的方法循环这些参数以将其转换为
nil
?还是我被困在做以下事情

foo = nil if foo.blank?
bar = nil if bar.blank?
baz = nil if baz.blank?
etc = nil if etc.blank?

我可以向您推荐以下解决方案:

foo, bar, baz, etc = str.split(',').map{|ss| ss.blank? ? nil : ss}

如果在rails中执行此操作,则可以使用Object#presence方法:

foo, bar, baz, etc = str.split(',').map(&:presence)

为什么需要为nil?因为nil和空字符串是两个不同的值。