从c#

时间:2016-02-08 08:42:34

标签: c# string email

我需要从电子邮件字符串中提取名称姓氏

在数据库中,我有两种类型的地址电子邮件:

  

name.surname@xxxx.eu

或者

  

name.surname@xxxx.com

我尝试过这段代码:

    string Email1 = Email.ToString().ToUpper().Replace("@", "");
    if (Email1.Contains("XXXX.COM"))
    {
        Response.Write(Email1.ToString().Replace(".", " ").ToUpper().Remove(Email1.Length - 8, 8) + "<br />");
    }
    else
    {
        Response.Write(Email1.ToString().Replace(".", " ").ToUpper().Remove(Email1.Length - 7, 7) + "<br />");
    }

此代码不仅适用于这些地址电子邮件:

  

VINCENT.NAPOLITAIN@XXXX.EU

因为回报是:

  

VINCENT NAPOLITAINX

不适用于:

  

MARK.CHAIN@XXXX.COM

因为回报是:

  

MARK CHAINX

不适用于:

  

NICODEMUS.ANGELICUM@XXXX.EU

因为回报是:

  

NICODEMUS ANGELICUMX

如何解决这个问题?

请帮帮我,非常感谢你。

7 个答案:

答案 0 :(得分:5)

为什么不用两个分隔符@.分隔您的地址

string email = "VINCENT.NAPOLITAIN@XXXX.EU"; 
string[] result = email.Split('.', '@').ToArray();
string firstname = result[0];
string lastname = result[1];

答案 1 :(得分:2)

您可以使用String.split():

string email = "VINCENT.NAPOLITAIN@XXXX.EU"; 
string names = email.Split('@')[0];
string name = "";
string surname = "";
if (names.Contains('.'))
{
    var nameSurname = names.Split('.');
    name = nameSurname[0]; //
    surname = nameSurname[1];
}

答案 2 :(得分:2)

简单方法(基于您指定的要求,似乎有点奇怪):

var test = "name.surname@xxxx.eu";
var name = test.Substring(0, test.IndexOf('@')).Replace(".", " ");

当然可能想要添加异常处理。

答案 3 :(得分:1)

一个选项是找到.的索引和@的索引,并对其进行子串:

string email = "aa.bb@cc.dd";

int periodIndex = email.IndexOf('.');
int atIndex = email.IndexOf('@');

string firstName = email.Substring(0, periodIndex);
string lastName = email.Substring(periodIndex + 1, atIndex - periodIndex - 1);

更简单的方法是使用切断名称的正则表达式。

这个会做:

(.*?)\.(.*?)@(.*)

第一个捕获是第一个名称,第二个捕获是姓氏。

答案 4 :(得分:1)

我只想使用split来执行此操作:

var nameDOTsurname = Email1.Split('@'); // This would leave in nameDOTsurname[0] the name.surname and in nameDOTsurname[1] the XXX.whatever
var name = nameDOTsurname[0].Split('.')[0];
var surname = nameDOTsurname[0].Split('.')[1];

答案 5 :(得分:1)

您可以使用Regex模式:

(.+)\.(.+)(?=\@)

<强>解释

 (.+)   - Matches any character in a group 
 \.     - Matches (.) dot 
 (?=\@) - Exclude @ character

<强>代码:

var match = Regex.Match(email, pattern);
var name = match.Groups[1].Value;
var surname = match.Groups[2].Value;

答案 6 :(得分:1)

如果您的电子邮件地址格式符合firstname.secondname@wherever...,这将有效 这是适合你的代码...

string e = "VINCENT.NAPOLITAIN@XXXX.EU"; 
string firstname = e.Substring(0, e.IndexOf("."));
string secondname = s.Substring(s.IndexOf(".")+1, s.IndexOf("@")-s.IndexOf(".")-1);

适用于您的所有电子邮件