【问题标题】:How to use linq to process and conditionally read text file into a List<class> or a dictionary如何使用 linq 处理和有条件地将文本文件读入 List<class> 或字典
【发布时间】:2015-03-08 02:51:40
【问题描述】:

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

"

^名字A

值A

^名字B

^名字C

值C

"

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

公共类名称值 { 公共字符串列名; 公共字符串值; }

像这样:

({"name_A","valueA"},{"name_B",""},{"name_C","valueC"})

基本上,每个名称行都以 ^ 开头,后跟一个值行,但并非每个名称在文本文件中都有附加值。在名称行中,将所有空格替换为 _。

谢谢!

【问题讨论】:

    标签: linq text process


    【解决方案1】:

    这里有一些代码可以做你想做的事情: 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 +"|"));
       }
    }
    

    它使用正则表达式和 LINQ。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多