Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 14

Программа для обработки адреса электронной почты

05.03.2013, 10:57. Показов 2044. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят,может быть у кого-то было подобное задание

Разработать программу,которая позволяет ввести адрес электронной почты(например,myemail@postemail.com) и выделяет имя пользователя (myemail), имя почтового сервера(postemail) и имя домена первого уровня(com) и выводит эти данные. Предусмотреть работу со следующими доменами перового уровня:com,edu,ru,net,info.Программа должна обрабатывать ошибки:
-в именах пользователя и почтового сервера должны быть только алфавитно-цифровые символы;
-другие имена доменов первого уровня кроме com,edu,ru,net,info, не допускаются;
-отсутствует символ @ в адресе электронной почты;
-отсутствует точка между именем почтового сервера и доменом первого уровня;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2013, 10:57
Ответы с готовыми решениями:

Реализовать проверку валидности адреса электронной почты
Подскажите как реализовать проверку валидности мыла или проверку пароля к мылу(принимая в расчет что мыло существует)?

Форма указанной строки не годится для адреса электронной почты
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Dim i As Long ...

Проверка адреса электронной почты
Как можно проверить адрес электронной почты, не отправляя данные формы на сервер?

6
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2013, 11:15
Ritata, ну тут заданий ни у кого нет, но задача довольно интересная и не очень сложная. Регулярные выражения вам в помощь Для выделения текста - richtextbox, я думаю, сойдет.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
05.03.2013, 12:38
регулярки - это отдельная тема страниц на 700. Можно обойтись и IndexOf'ами всякими, и прочими стандартными методами работы со строками
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2013, 12:39
Монфрид, что-то странное говорите, мне гугления одной странички msdn "Элементы языка регулярных выражений" хватило, чтобы ими пользоваться, по крайней мере, на уровне решения подобной задачи. Тем более что для работы со строкой ничего проще не придумаешь.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
05.03.2013, 12:49
А postemail тоже может меняться?
0
 Аватар для andrew_w2k
341 / 341 / 90
Регистрация: 04.03.2010
Сообщений: 648
05.03.2013, 12:50
честно говоря, сам не доверяю регулярным выражениям, не люблю параметры передавать в виде строки) это мне напоминает nhibernate где названия классов передавать можно как параметр) но иногда с регулярками код проще и понятнее...
вот набросал, логику валидации оставляю Вам как домашнее задание
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Linq;
 
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string mail = "mymail@mail.com";
            Email e = new Email(mail);
            Console.WriteLine(e);
            Console.ReadKey();
        }
    }
 
    public class Email
    {
        string _domain;
        string _userName;
        string _postEmail;
        string[] _domains = { "com", "edu", "ru", "net", "info" };
 
        public Email(string email)
        {
            _domain = email.Split('.').Last();
            _userName = email.Split('@').First();
            _postEmail = email.Split('@')[1].Split('.')[0];
        }
 
        bool ValidateDomain(string domain)
        {
 
            if (_domains.FirstOrDefault(x => x == domain) != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
 
        bool ValidateUserName(string userName)
        {
            foreach (char ch in _userName)
            {
                if (!char.IsLetterOrDigit(ch)) return false;
            }
            return true;
        }
 
        public string Domain
        {
            get { if (ValidateDomain(_domain)) { return _domain; } else { throw new Exception("Domain is not valid"); } }
            private set { }
        }
 
        public string UserName
        {
            get { if (ValidateUserName(_userName)) { return _userName; } else { throw new Exception("UserName is not valid"); } }
            private set { }
        }
 
        public string PostEmail { get { return _postEmail; } private set { } }
 
        public override string ToString()
        {
            return string.Format("UserName:{0} PostEmail:{1} Domain:{2}", UserName, PostEmail, Domain);
        }
    }
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2013, 13:15
Имхо как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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);
        }
        
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2013, 13:15
Помогаю со студенческими работами здесь

Проверка адреса электронной почты
Друзья, всем привет! Стоит задача перед отправкой сообщения проверить существование электронного адреса. Не нужно путать с...

Извлечение адреса электронной почты
Есть процедура для выделения из текста адреса электронной почты и два Memo, как сделать что бы в Memo1 я вставил текст, а в Memo2 получил...

Обработка ссылки адреса электронной почты
Помогите пожалуйста почему то не нажимается на адрес электронной почты в коде ниже с JAVASCRIPT &lt;html...

Проверка валидности адреса электронной почты
Здравствуйте. как реализовать следующее: в textbox вводится e-mail необходимо чтобы он был (символы)@mail.ru или (символы)@inbox.ru ...

Удалить из адреса электронной почты домен
Ребят выручайте нужно срочно помощь! Суть. Я загружаю базу строк в memo Вид базы email(например cyberforum@yandex.ru:123123) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru