Определить, является ли строка электронным адресом в формате: <имя пользователя>@<доменное имя> - C#
Формулировка задачи:
Пользователем вводится строка. Определить, является ли она электронным адресом в формате: <имя пользователя>@<доменное имя>.
Можно весь код пожалуйста
Решение задачи: «Определить, является ли строка электронным адресом в формате: <имя пользователя>@<доменное имя>»
textual
Листинг программы
private static void Main()
{
Console.WriteLine(IsEmail("test@mail.com"));
Console.WriteLine(IsEmail("1test@mail"));
Console.WriteLine(IsEmail("test.test@mail.com"));
Console.WriteLine(IsEmail("test@mail."));
Console.WriteLine(IsEmail("test@mail..com"));
Console.WriteLine(IsEmail("test.@mail.com"));
Console.WriteLine(IsEmail("test@test@mail.com"));
Console.WriteLine(IsEmail("@mail.com"));
Console.WriteLine(IsEmail(".test@mail.com"));
}
private static bool IsEmail(string email)
{
var valid = true;
var current = TokenCategory.Undefined;
var atCount = 0;
foreach (char symbol in email)
{
if (IsDigit(symbol) || IsLetter(symbol))
{
current = TokenCategory.Literal;
}
else if (IsAt(symbol) && current == TokenCategory.Literal)
{
current = TokenCategory.At;
atCount++;
}
else if (IsDot(symbol) && current == TokenCategory.Literal)
{
current = TokenCategory.Dot;
}
else
{
valid = false;
break;
}
}
return valid && current == TokenCategory.Literal && atCount == 1;
}
private static bool IsDigit(char symbol) => symbol >= '0' && symbol <= '9';
private static bool IsLetter(char symbol) => symbol >= 'a' && symbol <= 'z' || symbol >= 'A' && symbol <= 'Z';
private static bool IsAt(char symbol) => symbol == '@';
private static bool IsDot(char symbol) => symbol == '.';
enum TokenCategory { Undefined, Literal, At, Dot }