使用已知密钥按部分分组文本

时间:2017-01-26 20:51:53

标签: c# string linq

我的字符串看起来像这样。为了视觉目的,每一行都以\r分隔,放置在这里。

BEGIN_SECTIONS_INFORMATION
NUMSECTIONS=6
SECTION_GROUPNAME[1]=GROUP_1
SECTION_NAME[1]=foo
BEGIN_SECTION[1]
//blah...
END_SECTION[1]
SECTION_GROUPNAME[2]=GROUP_2
SECTION_NAME[2]=bazzz
BEGIN_SECTION[2]
//blah...
END_SECTION[2]
END_SECTIONS_INFORMATION

我需要将此字符串SECTION_GROUPNAME拆分为IEnumerable<T>,如下所示:

索引0:

SECTION_GROUPNAME[1]=GROUP_1
SECTION_NAME[1]=foo
BEGIN_SECTION[1]
//blah...
END_SECTION[1]

索引1:

SECTION_GROUPNAME[2]=GROUP_2
SECTION_NAME[2]=bazzz
BEGIN_SECTION[2]
//blah...
END_SECTION[2]

规则:

  • 每个部分均以SECTION_GROUPNAME[n]开头。
  • 每个部分都有SECTION_NAME[n],并且有BEGIN_END_
  • 部分名称是唯一的。

我尝试过:

var sections = from line in sectionGroups
               where line.StartsWith("SECTION_GROUPNAME")
               group line by "SECTION_GROUPNAME";

也试过

var sections = sectionGroups.Split(new string[] { "SECTION_GROUPNAME" }, StringSplitOptions.None);

this post开始,OP为组创建了枚举/列表。我无法做到这一点,因为我不知道字符串中会有多少组/部分。

1 个答案:

答案 0 :(得分:2)

假设您想要一个public void Configuration(IAppBuilder appBuilder) { var config = new HttpConfiguration(); WebApiConfig.Register(config); config.Filters.Add(new ExceptionHandlingAttribute()); // move other lines over here appBuilder.UseWebApi(config); } 个字符串,其中包含您描述的所有内容而没有关键结构。

基本思想是删除你不想要的东西(开头和结尾位),然后按所需字符串的开头拆分。最后,拆分文本不会将其放入结果数组中,因此您必须手动将其添加回来。

以下对我有用:

IEnumerable<T>