我无法弄清楚我在这里做错了什么..
if @calc.docket_num =~ /DC-000044-10/ || @calc.docket_num =~ /DC-67-09/
@calc.lda = true
else
@calc.lda = false
end
但似乎@calc.docket_num
可以是任何字符串,它总是返回true
。
我不是这样做的吗?
答案 0 :(得分:32)
这是一个单行:
@calc.lda = !!(@calc.docket_num =~ /DC-000044-10|DC-67-09/)
!!
强制响应为true / false,然后您可以直接指定布尔变量。
答案 1 :(得分:4)
或者,您可以对Regexp类使用三等于(===
)运算符,该运算符用于在使用case
语法时确定相等性。
@calc.lda = /DC-000044-10|DC-67-09/ === @calc.docket_num
@calc.lda
=> true
<强>提防强>
/Regexp/ === String
与String === /Regexp/
完全不同!!!!该方法不可交换。每个类以不同方式实现===
。对于上面的问题,正则表达式必须位于===
的左侧。
对于Regexp实现,您可以看到更多关于此的文档(从Ruby 2.2.1开始)here。
答案 2 :(得分:2)
我认为问题出在您实施的其他地方。使用此代码进行检查:
k = 'random information' if k =~ /DC-000044-10/ || k =~ /DC-67-09/ puts 'success' else puts 'failure' end => failure