从 c# 中的字符串中提取名称和姓氏

本文关键字:提取 字符串 | 更新日期: 2023-09-27 18:33:49

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

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

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

因为返回是:

文森特·那不勒斯

不工作:

MARK.CHAIN@XXXX.COM

因为返回是:

马克·链克斯

不工作:

NICODEMUS.ANGELICUM@XXXX.EU

因为返回是:

尼哥底母安吉利库姆

如何解决这个问题?

请帮助我,提前非常感谢你。

从 c# 中的字符串中提取名称和姓氏

你为什么不用分隔符@.来拆分你的地址

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

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

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

当然,可能希望添加异常处理。

您可以使用 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];
}

您可以使用正则表达式模式:

(.+)'.(.+)(?='@)

解释:

 (.+)   - 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;

一种选择是找到.的索引和@的索引,并对其执行子字符串:

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);

一种更简单的方法是使用删除名称的正则表达式。

这个将做:

(.*?)'.(.*?)@(.*)

第一次捕获是名字,第二次捕获是姓氏。

我只会使用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];

如果您的电子邮件地址格式坚持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);

它适用于您的所有电子邮件