Я пытаюсь выяснить, содержит ли строка более двух вхождений определенного символа. Например,
is_valid_email("joey@[email protected]")
должен возвращать false, если имеется более двух "@" или ".". Могу я использовать что-то подобное?
if string.include?("@") > 2
return false
else
return true
end
Как уже указывалось, вы можете использовать count для решения своей непосредственной проблемы. Но на самом деле вам нужно что-то более надежное для проверки электронной почты. Все не так просто. Вам нужно будет использовать регулярное выражение.
Насколько я понимаю, это просто пример, над которым я работаю, и хотел узнать, есть ли способ проверить одинаковые типы символов в строке.
Кстати, ваш примерный адрес joey@[email protected] не содержит более, чем 2 символа @, он содержит точно 2. Вероятно, вам нужен >= 2. Что касается . - вполне нормально, если адреса электронной почты содержат несколько точек, например [email protected]
Для тестирования адресов электронной почты вам, вероятно, понадобится свободный валидатор в стиле RFC822.
Попробуйте добавить вопросительный знак к имени метода (is_email_address?). Лучше, пожалуй: valid_email_address?

Вы можете использовать String#count. Кроме того, нет особого смысла в выражении if, которое просто возвращает true или false; само логическое условие уже является true или false, поэтому вы можете просто вернуть его напрямую. В этом случае, поскольку часть if возвращает false, а else возвращает true, вы можете отрицать условие:
return !(string.count('@') >= 2)
Или используйте противоположное условие:
return string.count('@') < 2
Но если вы проверяете, что строка выглядит как адрес электронной почты, похоже, вы захотите убедиться, что она содержит ровно один «@»:
return string.count('@') == 1
Вы можете оставить ключевое слово return отключенным, если после этой проверки в теле метода не будет дополнительного кода; метод автоматически возвращает значение своего последнего выражения.
Что возвращает
String#include?? Если это не число, то нет, вы не можете этого сделать. Но есть и другие методы.