可以在大于语句中使用`include?`吗?

时间:2018-12-17 15:08:48

标签: ruby

我试图找出一个字符串是否包含两次以上的某个符号。例如,

is_valid_email("joey@g@mail.com")

如果有两个以上的false"@",则应返回"."。我可以使用这样的东西吗?

if string.include?("@") > 2
  return false
else
  return true
end

1 个答案:

答案 0 :(得分:5)

您可以使用String#count。另外,仅返回iftrue的{​​{1}}语句没有太多意义;布尔条件本身已经是falsetrue,因此您可以直接将其直接返回。在这种情况下,由于false部分返回if,而false返回else,因此可以否定条件:

true

或使用相反的条件:

return !(string.count('@') >= 2)

但是,如果您要验证一个字符串看起来像一个电子邮件地址,那么您似乎想确保该字符串恰好包含一个“ @”:

return string.count('@') < 2

只要在方法正文中进行此检查后没有其他代码,就可以关闭return string.count('@') == 1 关键字;方法会自动返回其最后一个表达式的值。