文本文件读取器直到文件结尾才读取

时间:2014-04-06 15:09:50

标签: c# .net linq

我有以下文本文件,我使用位置和长度作为规则来获取给定字符串的子字符串值。

    ID   A      B   Element Name                    Element    C    Length  Position Key2

    01  PN    PNFN  USER MID NAM                    USR        1      1         2      A

    ....about 60 rows

以下是我如何阅读文本文件并应用文本文件的位置和长度值 到字符串输入。

string input =“AAAAABBBBCCCCDDDDGGGG ......”

**EDIT**
     var values = File.ReadLines("file")
        .SkipWhile(string.IsNullOrWhiteSpace).Skip(1)
                          .Select(l => l.Split(new[] {' ', '\t'}, StringSplitOptions.RemoveEmptyEntries));
          var array1 = offsets.Select(split => new
                 {
                     Element = split[5],
                     Length = int.Parse(split[7]),
                     Position = int.Parse(split[8])
                 });

     foreach (var info in array1)
        {
            string substring = input.Substring(info.Position, info.Length);

            Console.WriteLine("Element: '{0}' Value: '{1}'", info.Element, substring);
        }    

这将只读取14行并打破循环。有什么我做错了吗?感谢

1 个答案:

答案 0 :(得分:0)

我使用子字符串而不是空格来查找确切位置:

       foreach (var hashtable in from item in offsets
                                                 let element = item.Substring(4,2)
                                                 let length = Convert.ToInt32(item.Substring(6, 6))
                                                 let position = item.Substring(7, 4)
                                                 select new Hashtable
                                                     {
                                                         {"Element", element},
                                                         {"Length", length},
                                                         {"Position", position}
                                                     })