string.Split C#将文本保留在分隔符之外

Ser*_*erS 3 c# delimiter

我试图获取电子邮件地址列表以及名字和姓氏,并将它们转换为CSV格式.我的电子邮件地址采用以下格式:

First, Last <email1@example.com>; First, Last <email2@example.com>;
Run Code Online (Sandbox Code Playgroud)

我需要的输出如下:

email1@example.com,email2@example.com
Run Code Online (Sandbox Code Playgroud)

我使用以下代码:

string[] addresses = addresses_Delimited.Split(new Char[] { '<', '>' });
Run Code Online (Sandbox Code Playgroud)

addresses_Delimited 是我原始格式的地址列表.

问题是它没有消除名字和姓氏; 相反,它将返回名字和姓氏作为数组中的条目addresses.所以,addresses[0]="First,Last",addresses[1]="email1@example.com",addresses[2]="; First,Last".第一个之后的所有名字和姓氏条目都包含分号.

如何string.Split删除"<"和">"之外的所有文字?我需要使用其他东西吗?

das*_*ght 6

而不是使用Split不关心分隔符配对的,使用这样的正则表达式:

<([^>]+)>
Run Code Online (Sandbox Code Playgroud)

将此正则表达式应用于输入字符串时,您将捕获角括号的内容到捕获组编号1:

var s = "First, Last <email1@example.com>; First, Last <email2@example.com>;";
Regex regex = new Regex(@"<([^>]+)>");
foreach (Match m in regex.Matches(s)) {
    Console.WriteLine(m.Groups[1]);
}
Run Code Online (Sandbox Code Playgroud)

演示.