Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2021, 16:40   #1
notamiracle
Новичок
Джуниор
 
Регистрация: 02.06.2021
Сообщений: 1
По умолчанию Валидность (проверка E-mail)

Доброго времени суток, нужна помощь с программой, которая будет проверять email адрес на валидность.
Нашел код для С++, нужен перевод на C#, если получится, то с доп условиями, чтобы первым символом не были ._-@ не знаю, куда вставить условие... И еще чтобы перед и после собачки тоже отсутствовали ._-
Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
char str[30];
cout<<"Enter email"<<endl;
cin>>str;
{
bool valid = true;
int all_presents = 0;
std::string suitable_symbols = "-_.@"; // допустимые символы помимо латинских букв и цифр
for(int i = 0; str[i] != '\0'; i++)
    {
    if( !isalpha(str[i]) && !isdigit(str[i]) && suitable_symbols.find(str[i]) == std::string::npos){ // наличие недопустимого символа
        valid = false; break;
    }
    if(i > 0 && str[i] == '.' && str[i - 1] == '.') { valid = false; break; } // две точки подряд
    else if(i > 0 && str[i] == '@' && !all_presents) { all_presents = 1; } // наличие @
    else if(str[i] == '@' && all_presents) { valid = false; break; } // наличие двух @ в строчке
    else if( ( isalpha(str[i]) || isdigit(str[i]) ) && all_presents == 1) { all_presents = 2; } // наличие буквы или цифры после @
    else if(str[i] == '.' && all_presents == 2) { all_presents = 3; } // наличие точки после символа( который после @ )
    else if(isalpha(str[i]) && all_presents == 3 && str[i + 1] == '\0') { all_presents = 4; } // наличие буквы в конце строчки
    }
if(valid && all_presents == 4) { cout << "adress is valid and contains all the needed parts.";}
else { cout<<"adress is incorrect!"<<endl;}
}
}
Пытался переводить код сам, компилятор VS C# ругался на строку с
Код:
!isalpha(str[i]) && !isdigit(str[i]) && suitable_symbols.find(str[i]) == std::string::npos)
, на сравнение
Код:
else if(str[i] == '@' && all_presents) { valid = false; break; } // наличие двух @ в строчке
, получилось обойти его путем конвертации в bool тип.
и на сравнение
Код:
else if(i > 0 && str[i] == '@' && !all_presents) { all_presents = 1; } // наличие @
, не понимаю как это исправить, т.к выдается ошибка, что ! нельзя использовать к переменной типа int
Regex выражения не проходили и нужна программа без их использования.

Последний раз редактировалось notamiracle; 02.06.2021 в 17:03.
notamiracle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на валидность + tryParse Alfabrigadir C# (си шарп) 0 21.03.2021 22:26
Проверка на валидность URL [кроссплатформенно] bro Общие вопросы Delphi 8 04.04.2015 19:25
Проверка e-mail на валидность firerap Работа с сетью в Delphi 1 12.12.2012 15:20
Проверка документов word на валидность mishax Общие вопросы Delphi 1 19.09.2012 12:47
Проверка формы на валидность RegExps Jensi PHP 5 14.03.2009 14:00