Разбирайте простой адрес электронной почты на 2 части
Как получить имя пользователя и домен с адреса электронной почты:
string email = "[email protected]";
//Should parse into:
string username = "hello";
string domain = "example.com";
Я ищу кратчайший код для этого, не обязательно эффективный.
Сценарий: я хочу проанализировать его в моем представлении ASP.NET MVC, чтобы я мог его скрыть.
Ответы
Ответ 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);