无法理解RegEx布尔值的输出

时间:2012-03-09 11:19:41

标签: ruby regex boolean eval

我应该测试'name'是否由字母组成:

name = "Jack"

test = 'name =~ /^[A-Z]/'

据我了解,这是:

puts eval(test)

应该返回:TRUE,但给出的输出是'0',(是的,我知道某些语言中的0 = = false ..)

但是,如果我在if语句中尝试eval ..

if eval(test)
puts 'yeah'
end

..我得到了预期的结果..是的,或者更确切地说:'是啊'..

为什么我不能马上得到'正确'的输出?从我的朋友@Google中找不到任何有意义的东西..

2 个答案:

答案 0 :(得分:2)

=~返回匹配位置。

在ruby中,除nilfalse之外的所有内容都被视为真实。即使0也是如此!

将任何内容转换为bool的一种方法是使用!!

答案 1 :(得分:1)

如果您想获得true / false值,可以编写

!!(name =~ /^[A-Z]/)

但没有必要,因为if适用于=~

返回的值