如何从电子邮件地址中获取用户名和域名:
string email = "hello@example.com";
//Should parse into:
string username = "hello";
string domain = "example.com";
我希望找到最短的代码来实现此功能,不一定要高效。
场景:我想在ASP.NET MVC视图中解析它,以便我可以隐藏它。
如何从电子邮件地址中获取用户名和域名:
string email = "hello@example.com";
//Should parse into:
string username = "hello";
string domain = "example.com";
我希望找到最短的代码来实现此功能,不一定要高效。
场景:我想在ASP.NET MVC视图中解析它,以便我可以隐藏它。
使用MailAddress类。
MailAddress addr = new MailAddress("hello@site.example");
string username = addr.User;
string domain = addr.Host;
这种方法的好处还在于可以解析类似以下情况(以及其他你可能没有预料到的情况):
MailAddress addr = new MailAddress("\"Mr. Hello\" <hello@site.example>");
string username = addr.User;
string host = addr.Host;
在上述两种情况下:
Debug.Assert(username.Equals("hello"));
Debug.Assert(host.Equals("site.example"));
在你的文件顶部与其它using指令一起加入:
using System.Net.Mail;
String[] parts = "hello@example.com".Split(new[]{ '@' });
String username = parts[0]; // "hello"
String domain = parts[1]; // "example.com"
string username = email.Split('@')[0];
string domain = email.Split('@')[1];
Split
两次是低效的,在未来当事物改变时需要更多的维护工作。 - detunized使用此方法,当未找到域名或用户名时,不会抛出异常,而是返回null值。
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);
int i = email.IndexOf('@');
if (i >= 0)
{
username = email.Substring(0, i);
domain = email.Substring(i + 1);
}
string.Split
的方法在许多情况下都会失败。现在哪里是必要的(而且毫无意义的)正则表达式解决方案? - Jim Mischel