Программа для обработки адреса электронной почты - C#
Формулировка задачи:
Ребят,может быть у кого-то было подобное задание
Разработать программу,которая позволяет ввести адрес электронной почты(например,removed@mail.ru) и выделяет имя пользователя (myemail), имя почтового сервера(postemail) и имя домена первого уровня(com) и выводит эти данные. Предусмотреть работу со следующими доменами перового уровня:com,edu,ru,net,info.Программа должна обрабатывать ошибки:
-в именах пользователя и почтового сервера должны быть только алфавитно-цифровые символы;
-другие имена доменов первого уровня кроме com,edu,ru,net,info, не допускаются;
-отсутствует символ @ в адресе электронной почты;
-отсутствует точка между именем почтового сервера и доменом первого уровня;
Решение задачи: «Программа для обработки адреса электронной почты»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication54
{
class Program
{
static void Main()
{
var email = new Email(@"myemail@postemail.com");
Console.WriteLine(email.Name);
Console.WriteLine(email.ServerName);
Console.WriteLine(email.DomainName);
Console.ReadKey();
}
}
class Email
{
private static readonly HashSet<string> AllowedDomains = new HashSet<string> { "com", "edu", "ru", "net", "info" };
public readonly string Name, ServerName, DomainName;
public Email(string input)
{
if (input.IndexOf('@') < 0)
throw new ArgumentException("Отсутствует символ @ в адресе электронной почты", input);
if (input.IndexOf('.') < 0)
throw new ArgumentException("Отсутствует точка между именем почтового сервера и доменом первого уровня", input);
var result = Regex.Match(input, @"(.+)@(.+)\.(.+)");
Name = result.Groups[1].Value;
ServerName = result.Groups[2].Value;
DomainName = result.Groups[3].Value;
if (!Name.All(char.IsLetterOrDigit))
throw new ArgumentException("В имени пользователя должны быть только алфавитно-цифровые символы");
if (!ServerName.All(char.IsLetterOrDigit))
throw new ArgumentException("В имени почтового серера должны быть только алфавитно-цифровые символы");
if (!AllowedDomains.Contains(DomainName))
throw new ArgumentException("Неподдерживаемый домен " + DomainName);
}
}
}