首页 > 解决方案 > 根据特定要求拆分我的字符串

问题描述

我写了一个从字符串中提取某些信息的小方法。这种字符串的一个例子是

"Author: rajdra1 Subject: Sticky Note  Date: 09-08-2018 11:06:56" 

现在我需要将此字符串中的某些信息放入我的字符串数组中,例如作者、主题、日期。

我的方法——

Public void SplitString()
{
  string input = "Author: rajdra1 Subject: Sticky Note  Date: 09-08-2018 
                  11:06:56";

  string[] result = input.Split(new string[] {": "}, 

StringSplitOptions.RemoveEmptyEntries);

  foreach (var value in result)
  {
    Console.WriteLine(value);
    Console.ReadLine();
  }
}

我得到的结果如下:

{"rajdra1 Subject",  "Sticky Note  Date", "09-08-2018 11:06:56"}

但我的预期输出是:

{"rajdra1", "Sticky Note", "09-08-2018 11:06:56"}

实际上,我从 .txt 文件中获取此输入,并且我总是以以下格式获取输入

"Author: rajdra1 Subject: Sticky Note  Date: 09-08-2018 11:06:56"

我正在考虑将“作者”、“主题”和“日期”作为列标题,并且我想在特定标题下添加预期结果。

标签: c#parsing

解决方案


可以使用正则表达式从该字符串中提取作者、主题和日期:

var myRegex = new Regex(@"Author:\s+(?<author>.*)\sSubject:\s+(?<subject>.*)\s+Date:\s+(?<date>.*)", RegexOptions.None);
var strTargetString = @"Author: rajdra1 Subject: Sticky Note  Date: 09-08-2018 11:06:56";

var str = new string[3];
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
      str[0] = myMatch.Groups["author"].Value;
      str[1] = myMatch.Groups["subject"].Value;
      str[2] = myMatch.Groups["date"].Value;
}

推荐阅读