我正在寻找一种使用 Ruby 将空字符串转换为
nil
的方法。如果我最终得到的字符串是空的,我可以这样做
" ".strip!
这会给我空字符串
""
。
我希望能够做的就是这样的事情。
" ".strip!.to_nil!
这将用
nil
就地替换空字符串。如果字符串是to_nil!
,则直接将字符串更改为nil
,否则如果字符串不为空,则不会更改。这里的关键是我希望它直接发生,而不是通过诸如之类的分配
.empty?
' '.presence
# => nil
''.presence
# => nil
'text'.presence
# => "text"
nil.presence
# => nil
[].presence
# => nil
{}.presence
# => nil
true.presence
# => true
false.presence
# => nil
可以就地工作,因为可以修改原始对象来存储新值。但值
String#squeeze!
是不同类的对象,因此它不能用 String类的对象表示。
nil
然后你会得到:
class String
def to_nil
present? ? self : nil
end
end
当然,您也可以在检查是否适合您之前先剥掉绳子