从 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
因为返回是:
尼哥底母安吉利库姆
如何解决这个问题?
请帮助我,提前非常感谢你。
你为什么不用分隔符@
和.
来拆分你的地址
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);
它适用于您的所有电子邮件