我需要从电子邮件字符串中提取名称和姓氏。
在数据库中,我有两种类型的地址电子邮件:
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
如何解决这个问题?
请帮帮我,非常感谢你。
答案 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);
适用于您的所有电子邮件