根据文本文件每行中的列号从文本文件中读取数据

时间:2014-02-12 07:40:49

标签: c# xml file filestream streamreader

我从客户端获取一个文本文件,该文件有多行,每行可以属于一个组。每个组都有特定的数据格式。每种数据格式定义哪一个字段将出现在一行中的特定位置。我需要重新格式化数据并为每一行添加细节。

例如,有3个组GroupAGroupBGroupC,每个组格式由行号指定。

我会先知道GroupA之前的ID是1-5,然后是6-8的空格和9-15的日期以及16-18的空格和19的组标识符(如A / B / C) )后跟空格和组特定数据。

文本文件格式:

1234G   21122013   A   12.34INR   160EUR   -12.90Adj

1254G   21122011   B   12.34Adj   22122011   160EUR   -12.90Adj

1264G   21122012   A   12.34INR   160EUR   -12.90Adj

1274G   20122013   C   FEECredit   12.34INR   -12.90Adj   160EUR   ABCDXYZ   AAA

因此,通过读取每行的第19个位置,我可以识别该组,然后根据该组的字段结构处理该行。

阅读本文的最佳方式是什么?目前我正在考虑将信息存储在XML中,该信息将包含每个组的Field起始位置和字段长度。读取每一行我需要识别该组,然后选择XML中指定的正确XML和读取字段。

任何帮助将不胜感激,提前谢谢。

1 个答案:

答案 0 :(得分:2)

我将使用的非XML方法是首先将所有行读入List<string>,然后逐个处理这些行。通过在空格处分割每一行,您将在阵列中的相同索引中具有所有标识符(A / B / C)。检查此标识符并相应地处理该行的其余部分。这是一个简短的例子:

private void ProcessLines(List<string> lines)
{
    // lines holds the previously read lines from the textfile
    foreach (string line in lines)
    {
        string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        if (parts[2] == "A")
        {
            // code to process a line of code in Group A, etc.
        }
    }
}