2010-12-14 75 views
24

如何獲取用戶名和域名從一個電子郵件地址:解析普通電子郵件地址分爲兩個部分

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

我正在尋找最短的代碼要做到這一點,並不一定有效。


場景:我想解析它在我的ASP.NET MVC視圖,所以我可以掩飾它。

+1

email.Split('@')[0]和email.Split('@')[1] – Aliostad 2010-12-14 19:21:51

+0

使用Brian Bondy的解決方案。任何使用'string.Split'的東西在很多情況下都會失敗。現在哪裏是強制性(和絕望的錯誤)正則表達式解決方案? – 2010-12-14 19:44:26

+3

@Jim:/ hello/and /site\.com/ – 2010-12-14 19:59:50

回答

81

使用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; 
+0

小記:MailAddress在Windows應用商店應用上不可用。 – 2013-05-31 09:02:48

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

-1甚至沒有編譯 – 2010-12-14 21:24:46

+9

對於缺少分號?編譯錯誤有點過於嚴重,不是嗎? – 2010-12-14 21:48:56

+0

仍然不能編譯... – 2010-12-14 22:40:22

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

事件雖然這很好地展示了這個想法,但它卻設置了一個不好的例子。兩次調用「Split」效率不高,並且在事情發生變化時將來需要更多的維護。 – detunized 2010-12-14 19:32:03

+2

「我正在尋求最短的代碼來做到這一點,不一定高效。」 :) – hunter 2010-12-14 19:32:58

+2

那麼,這通常就是爲什麼我們必須每隔一兩年升級一次電腦。 – detunized 2010-12-14 19:35:42

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

使用此它不會給異常的時候沒有發現,而不是域名或用戶名,它會給爲空值,

C#:

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); 
相關問題