39 votes

Décomposer l'adresse e-mail en deux parties

Comment obtenir le nom d'utilisateur et le domaine à partir d'une adresse électronique de :

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

Je cherche le code le plus court pour faire cela, pas nécessairement efficace.


Scénario : je veux l'analyser dans ma vue ASP.NET MVC pour pouvoir la masquer.

106voto

Brian R. Bondy Points 141769

Utilisez le Adresse postale classe

MailAddress addr = new MailAddress("hello@site.com");
string username = addr.User;
string domain = addr.Host;

Cette méthode a l'avantage d'analyser également des situations comme celle-ci (et d'autres auxquelles vous ne vous attendez peut-être pas) :

MailAddress addr = new MailAddress("\"Mr. Hello\" <hello@site.com>");
string username = addr.User;
string host = addr.Host;

Dans les deux cas ci-dessus :

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

En haut de votre fichier avec le reste de vos directives d'utilisation, ajoutez :

using System.Net.Mail;

14voto

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

7voto

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

2voto

Tushar patel Points 2045

En utilisant ceci, il ne donnera pas d'exception si aucun domaine ou nom d'utilisateur n'est trouvé, mais il donnera une valeur nulle pour cela,

C# :

string email = "hello@example.com";

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

VB :

Dim email as String = "hello@example.com";
Dim username = email.Split("@".ToCharArray()).ElementAtOrDefault(0);
Dim domain = email.Split("@".ToCharArray()).ElementAtOrDefault(1);

1voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X