我有一种方法,可以使用以下格式之一接收联系人:
1 - "email@domain.com"
2 - "姓名<email@domain.com>"或"姓名<email@domain.com>"(可以存在空格)
如果是格式(1)我什么都不做.在(2)的情况下,我需要解析名称和电子邮件.
我不知道我会收到哪种格式的电子邮件.但它将是两者中的一个.
我怎样才能做到这一点?
看起来这个问题有多种方法,但是推荐的解决方案例如不处理“最后,第一个”,并且理查德在那篇文章中发布的建议缺少 SetUpTextFieldParser() 的代码
我有以下电子邮件地址列表作为字符串:
string str = "Last, First <name@domain.com>, name@domain.com, First Last <name@domain.com>, \"First Last\" <name@domain.com>, \"Last, First\" <name@domain.com>";
Run Code Online (Sandbox Code Playgroud)
当前代码执行以下操作:
str.Split(",");
Run Code Online (Sandbox Code Playgroud)
由于以下中的逗号,它会生成不正确的列表:
"Last, First"
Run Code Online (Sandbox Code Playgroud)
任何人都可以在这里分享一些优雅的东西,以便我最终得到以下形式的字符串数组:
Last, First <name@domain.com>
name@domain.com
First Last <name@domain.com>
"First Last" <name@domain.com>
"Last, First" <name@domain.com>
Run Code Online (Sandbox Code Playgroud)
编辑 - 解决方案
我最终使用了 Yacoub Massad 的解决方案,因为它很简单(正则表达式在我的开发组中很难维护,因为不是每个人都理解它们)。下面是代码(Fiddle),添加了一些内容并进行了简单的测试,以确保一切正常:
_
using System;
using System.Collections.Generic;
using System.Net.Mail;
public class Program
{
public static void Main()
{
//https://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress(v=vs.110).aspx
//Some esoteric "comment" formats as well as …
Run Code Online (Sandbox Code Playgroud)