如何提取由“;”分隔的子字符串在C#中

时间:2017-05-26 09:26:40

标签: c# outlook

我必须解析一个文本文件,其行如下:

ToList=abc@gmail.com;xyz@gmail.com;dom@yahoo.in; iter@outlook.com

每当在文本文件中遇到"ToList="时,应该提取该行中的不同电子邮件ID,该邮件ID由";"分隔并放入Outlook邮件的Recepient列表中。

5 个答案:

答案 0 :(得分:1)

这样的事情应该有效

string original = "abc@gmail.com;xyz@gmail.com"
string[] splitString = original.Split(';');

答案 1 :(得分:1)

您可以使用split方法实现此目的:

string abc="abc;paw;mnh";

string[] extracted =  abc.Split(';');

for(int i=0;i<extracted.Length;i++)
{
    Console.WriteLine(extracted[i]);
}

答案 2 :(得分:0)

您可以使用Split方法两次,如下所示:

string data = ".........";
string [] myRecipients = data.Split(new string[] { "ToList=" }, StringSplitOptions.None);

foreach (string entry in myRecipients )
{
    string[] mails =  entry.Split(';');
}

答案 3 :(得分:0)

如果您有文本文件,我建议使用 Linq 过滤掉地址并解析它们:

  using System.IO;
  using System.Linq;

  ...

  string[] addresses = File
    .ReadLines(@"C:\MyFile.txt")
    .Where(line => line.StartsWith("ToList=")) // addresses only
    .SelectMany(line => line.Split(';'))       // flatten the collection  
    .Select(item => item.Trim())               // let's trim spaces
    .Distinct()                                // we don't want repeats
    .ToArray();

最后,要将地址集合(数组)收集到一个字符串中,请使用string.Join

  string address = string.Join(";", addresses);

答案 4 :(得分:0)

正则表达式有时会派上用场

string input = "ToList=abc@gmail.com;xyz@gmail.com;dom@yahoo.in; iter@outlook.com";
string pattern = @"\w+[@]\w+[.]\w+";
var emails = Regex.Matches(input, pattern).Cast<Match>().Select(m => m.Value);