【发布时间】:2014-02-20 10:37:43
【问题描述】:
在 ruby 中,我看到很多代码在做这样的事情:
def test(s)
s =~ /Macintosh/
end
测试一个字符串是否匹配一个正则表达式。但是,这将返回一个 fixnum 或 nil,具体取决于它是否找到匹配项。有没有办法做同样的操作,但它是否返回一个布尔值来判断它是否匹配?
我想到的两种可能的解决方案是!(s =~ /Macintosh/).nil? 和!(s !~ /Macintosh/),但它们似乎都不是很可读。有没有类似的东西:
def test(s)
s.matches?(/Macintosh/)
end
【问题讨论】:
-
!!(string =~ /some regex/)呢? -
@rathrio 会检查然后检查 nil,我在问是否有一个布尔方法可以返回 true 或 false。
-
只是出于兴趣:您需要布尔值是否有特定原因?在大多数用例中,返回 nil 或非 nil 值都可以正常工作,对吧?
-
@rathrio 问题是,如果针在大海捞针中的位置 0,=~ 返回 0。虽然 ruby 将 0 评估为 true,但 mysql 不会。这是一个轨道的事情。
-
啊,我明白了。很高兴知道!谢谢。