Подтвердить что ты не робот

Разбирайте простой адрес электронной почты на 2 части

Как получить имя пользователя и домен с адреса электронной почты:

string email = "[email protected]";
//Should parse into:
string username = "hello";
string domain = "example.com";

Я ищу кратчайший код для этого, не обязательно эффективный.


Сценарий: я хочу проанализировать его в моем представлении ASP.NET MVC, чтобы я мог его скрыть.

4b9b3361

Ответ 1

Используйте MailAddress класс

MailAddress addr = new MailAddress("[email protected]");
string username = addr.User;
string domain = addr.Host;

Этот метод имеет также преимущества для таких ситуаций синтаксического анализа (и других, которых вы не ожидаете):

MailAddress addr = new MailAddress("\"Mr. Hello\" <[email protected]>");
string username = addr.User;
string host = addr.Host;

В обоих случаях выше:

Debug.Assert(username.Equals("hello"));
Debug.Assert(host.Equals("site.com"));

В верхней части файла с остальными вашими используемыми директивами добавьте:

using System.Net.Mail;

Ответ 2

String[] parts = "[email protected]".Split(new[]{ '@' });
String username = parts[0]; // "hello"
String domain = parts[1]; // "example.com"

Ответ 3

string username = email.Split('@')[0];
string domain = email.Split('@')[1];

Ответ 4

int i = email.IndexOf('@');
if (i >= 0)
{
    username = email.Substring(0, i);
    domain = email.Substring(i + 1);
}

Ответ 5

Используйте это, чтобы он не выдавал исключение, если ни один домен или имя пользователя не найдены, вместо этого он будет давать нулевое значение,

С#:

string email = "[email protected]";

string username = email.Split('@').ElementAtOrDefault(0);
string domain = email.Split('@').ElementAtOrDefault(1);

VB:

Dim email as String = "[email protected]";
Dim username = email.Split("@".ToCharArray()).ElementAtOrDefault(0);
Dim domain = email.Split("@".ToCharArray()).ElementAtOrDefault(1);