我有一个字符串数组,其中包含电子邮件收件人'姓名和电子邮件。要发送相关的电子邮件,我需要使用正则表达式拆分值。我是这个正则表达式领域的新手:
这是字符串数组
[
"Jason D Silva <ejd@yopmail.com>",
"Aruna Nishantha <arunan@yopmail.com>",
"Dan Carter <dancarter@yopmail.com>"
]
我想将值拆分为Name和Email。一旦拆分正确完成,我将把它插入到列表中,如下所示:
List<KeyValuePair<string, string>> recipientList = new List<KeyValuePair<string, string>>();
foreach (var item in recipients)
{
// Regex pattern
if (true)
{
//add to recipientList
}
}
有关正则表达式模式的任何帮助吗?
答案 0 :(得分:8)
您可以使用以下正则表达式:
^(?<Name>.*)\s\<(?<Email>.*)\>$
使用此功能,您可以使用以下命令检索姓名和电子邮件地址:
var match = Regex.Match("Jason D Silva <ejd@yopmail.com>", @"^(?<Name>.*)\s\<(?<Email>.*)\>$");
var email = match.Groups["Email"].Value;
var name = match.Groups["Name"].Value;
答案 1 :(得分:1)
使用String.Substring
方法正确实施
int start, end;
String[] a = {"Jason D Silva <ejd@yopmail.com>","Aruna Nishantha <arunan@yopmail.com>","Dan Carter <dancarter@yopmail.com>" };
foreach (String item in a)
{
Console.WriteLine(item);
end = item.IndexOf('<');
Console.WriteLine(" \t Name : " + item.Substring(0, end));
start = item.IndexOf('<');
end = item.IndexOf('>');
Console.WriteLine(" \t email : " + item.Substring(start + 1, end - (start + 1)));
}
输出:
"Jason D Silva <ejd@yopmail.com>"
Name : Jason D Silva
email : ejd@yopmail.com
"Aruna Nishantha <arunan@yopmail.com>"
Name : Aruna Nishantha
email : arunan@yopmail.com
"Dan Carter <dancarter@yopmail.com>"
Name : Dan Carter
email : dancarter@yopmail.com
答案 2 :(得分:0)
您不需要正则表达式,您可以改为使用String.Split
:
string[] myArray = // ...
foreach(string kv in myArray)
{
string[] values = kv.Split(" <");
// to eliminate the terminating ("noisy" > at the end
values[1] = values[1].Substring(0, values[1].IndexOf('>');
}
这当然假设你的字符串看起来总是一样。