相关疑难解决方法(0)

如何以"Name <Email>"格式解析字符串

我有一种方法,可以使用以下格式之一接收联系人:

1 - "email@domain.com"

2 - "姓名<email@domain.com>"或"姓名<email@domain.com>"(可以存在空格)

如果是格式(1)我什么都不做.在(2)的情况下,我需要解析名称和电子邮件.

我不知道我会收到哪种格式的电子邮件.但它将是两者中的一个.

我怎样才能做到这一点?

c# string parsing

5
推荐指数
1
解决办法
5345
查看次数

C# 中以逗号分隔的电子邮件地址列表的一种优雅方式

看起来这个问题有多种方法,但是推荐的解决方案例如不处理“最后,第一个”,并且理查德在那篇文章中发布的建议缺少 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),添加了一些内容并进行了简单的测试,以确保一切正常:

  • 尾随逗号以防有人粗心
  • 添加来自 MSDN 页面的(评论)电子邮件地址格式

_

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)

c#

5
推荐指数
1
解决办法
4247
查看次数

标签 统计

c# ×2

parsing ×1

string ×1