是否有比下面更好的方法来检查字符串是否为零或在Ruby中长度为0?
if !my_string || my_string.length == 0
return true
else
return false
end
Run Code Online (Sandbox Code Playgroud)
在C#中有方便的
string.IsNullOrEmpty(myString)
Run Code Online (Sandbox Code Playgroud)
有类似于Ruby的东西吗?
小智 223
当我不担心性能时,我会经常使用它:
if my_string.to_s == ''
# It's nil or empty
end
Run Code Online (Sandbox Code Playgroud)
Avd*_*vdi 68
如果您愿意需要ActiveSupport,则可以使用#blank?
为NilClass和String定义的方法.
Vin*_*hni 63
我喜欢这样做(在非Rails/ActiveSupport环境中):
variable.to_s.empty?
Run Code Online (Sandbox Code Playgroud)
这是因为:
nil.to_s == ""
"".to_s == ""
Run Code Online (Sandbox Code Playgroud)
Rôm*_*con 31
jcoby提案的替代方案是:
class NilClass
def nil_or_empty?
true
end
end
class String
def nil_or_empty?
empty?
end
end
Run Code Online (Sandbox Code Playgroud)
Hon*_*nza 30
正如在此之前所说的那样,Rails(ActiveSupport)有一个方便的空白?方法,它实现如下:
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
Run Code Online (Sandbox Code Playgroud)
很容易添加到任何基于ruby的项目.
这个解决方案的优点在于它不仅可以用于字符串,还可以用于阵列和其他类型.
Sat*_*uri 15
variable.blank?会做的.如果字符串为空或字符串为nil,则返回true.
Kon*_*lph 13
nil?
可以在布尔上下文中省略.通常,您可以使用它来复制C#代码:
return my_string.nil? || my_string.empty?
Run Code Online (Sandbox Code Playgroud)
首先,要注意这种方法:
正如Jesse Ezel所说:
"这种方法似乎很方便,但大多数时候我发现这种情况来自于试图掩盖更深层次的错误.
您的代码应该坚持使用字符串的特定协议,您应该了解协议在库代码和您正在使用的代码中的使用.
NullOrEmpty协议通常是一个快速修复(所以真正的问题仍然在其他地方,你有两个协议在使用)或者在实现新代码时缺乏特定协议的专业知识(同样,你应该真的知道什么你的回报值是)."
如果你修补String类...确保NilClass也没有补丁!
class NilClass
def empty?; true; end
end
Run Code Online (Sandbox Code Playgroud)
每个班级都有一个nil?
方法:
if a_variable.nil?
# the variable has a nil value
end
Run Code Online (Sandbox Code Playgroud)
字符串有empty?
方法:
if a_string.empty?
# the string is empty
}
Run Code Online (Sandbox Code Playgroud)
请记住,字符串在空时不相等nil
,因此请使用该empty?
方法检查字符串是否为空.