我正在寻找一种方法来使用Ruby将一个空字符串转换为nil
。如果我最终得到的字符串是空格,我可以
" ".strip!
这将给予空字符串""
。
我希望能够做的是这样的事情。
" ".strip!.to_nil!
这将得到一个用nil
替换空字符串的位置。如果字符串是.empty?
,则to_nil!
将直接将字符串更改为nil
,否则如果字符串不为空,则不会更改。
这里的关键是,我希望它直接发生,而不是通过如下赋值语句
f = nil if f.strip!.empty?
4条答案
按热度按时间5lhxktic1#
干净的方法是使用
presence
。我们来测试一下。
请注意,此方法来自Ruby on Rails v4.2.7 https://apidock.com/rails/Object/presence
注意:不适用于IRB,适用于Ruby on Rails!
iswrvxsc2#
这不可能。
String#squeeze!
可以在原处工作,因为可以修改原始对象来存储新值,但是值nil
是另一个类的对象,所以不能用类String的对象来表示。r1zk6ea13#
我知道我有点晚了,但是你可以为String类编写你自己的方法,并在初始化器中运行代码:
然后你会得到:
当然,你也可以在检查是否适合你之前剥离字符串
fgw7neuy4#
我们可以使用
string[regexp]
,如果匹配,则返回new_string
;如果不匹配,则返回nil
(参见文档String)。