Ruby if语句中的2个条件
我试图检测电子邮件地址是否不是两个域中的一个,但我在ruby语法方面遇到了一些问题。我目前有:Ruby if语句中的2个条件,ruby,Ruby,我试图检测电子邮件地址是否不是两个域中的一个,但我在ruby语法方面遇到了一些问题。我目前有: if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com")) #Do Something end 这是条件的正确语法吗?而不是这里的或,您需要一个逻辑&&(and),因为您试图查找两个字符串都不匹配的字符串 通过使用或,如果任一条件为真,则整个条件仍将为假 请注意,我使用的是&
if ( !email_address.end_with?("@domain1.com") or !email_address.end_with?("@domain2.com"))
#Do Something
end
这是条件的正确语法吗?而不是这里的
或,您需要一个逻辑&&
(and),因为您试图查找两个字符串都不匹配的字符串
通过使用或
,如果任一条件为真,则整个条件仍将为假
请注意,我使用的是&&
而不是和
,因为它具有更高的优先级。详情如下
从评论中:
可以使用构建等效条件,除非使用逻辑or|
unless email_address.end_with?("@domain1.com") || email_address.end_with?("@domain2.com")
这可能更容易阅读,因为|
的两边不必用求反代码>如何:
(!email_address[/@domain[12]\.com\z/])
如果添加了更多的域,那么重复的电子邮件地址。以?
结尾会变得很无聊。备选方案:
if ["@domain1.com", "@domain2.com"].none?{|domain| email_address.end_with?(domain)}
#do something
end
我忘了end\u with?
接受多个参数:
unless email_address.end_with?("@domain1.com", "@domain2.com")
#do something
end
看起来不错,不过不需要外括号。你能发布一些关于你的问题的更多信息吗?或者,相当于:除非上面添加了email_address.end_with?(“@domain1.com”)| email_address.end_with?(“@domain2.com”)@LucasMarcondesPavelski。我倾向于使用逻辑AND而不是OR的除非,但这里避免否定很好。呵呵,我刚想发布类似的东西,除了我的版本是除非<代码>任何?
表格+1.如果我需要更新更多的域,我会记住这一点。
unless email_address.end_with?("@domain1.com", "@domain2.com")
#do something
end