如何使用linq处理和有条件地将文本文件读入List <class>或字典</class>

时间:2015-03-08 02:51:41

标签: linq text process

如何使用Linq处理以下场景:这是示例测试文件

^ name A

值a

^名字B

^ name C

valueC

我希望linq可以处理它并将它们读入List或字典

公共类NameValue     {         public string colname;         公共字符串colvalue;     }

像这样:

({ “name_A”, “值a”},{ “name_B”, “”},{ “name_C”, “valueC”})

基本上每个名称行都以^开头,后跟一个值行,但并非每个名称都在文本文件中附加了一个值。在名称行中,用_。

替换任何空格

THX!

1 个答案:

答案 0 :(得分:0)

以下是一些应该执行您想要执行的操作的代码: https://ideone.com/ThplS6

using System;
using System.Text.RegularExpressions;
using System.Linq;

public class Test
{
   public static void Main()
   {
      var input = @"^name A
      valueA
      ^name B
      ^name C
      valueC";
      var pattern = @"\^[^\^]*";

      var matches = Regex.Matches(input, pattern, RegexOptions.Multiline);
      var dict = matches.Cast<Match>().ToDictionary(s => s.Value.Split('\n')[0].Trim().Remove(0, 1), s => s.Value.Split('\n')[1].Trim());

      Console.WriteLine(dict.Aggregate(String.Empty, (s, s1) => s + s1.Key + ":" + s1.Value +"|"));
   }
}

它使用Regex和LINQ。