读取文本文件并提取特定列

时间:2010-05-10 18:45:33

标签: c#

我需要做的是读取特定的文本文件,并根据字符串拉出整个列。

因此,如果我的字符串是停车费,我会在我的|中删除任何列标题行匹配单词parkingfee的分隔文件

1 个答案:

答案 0 :(得分:1)

这应该可以帮到你。要做你想做的事,你可以这样做:

foreach(string val in GetColumnValues(fileName, "parkingfee", "|")
{
    ...
}

这是功能:

public static IEnumerable<string> GetColumnValues(string fileName, string columnName, string delimiter)
{
    using (System.IO.StreamReader reader = new System.IO.StreamReader(fileName))
    {
        string[] delim = new string[] { delimiter };

        string[] columns = reader.ReadLine().Split(delim, StringSplitOptions.None);

        int column = -1;

        for (int i = 0; i < columns.Length; i++)
        {
            if (string.Compare(columns[i], columnName, true) == 0)
            {
                column = i;
                break;
            }
        }

        if (column == -1) throw new ArgumentException("The specified column could not be found.");

        while (reader.BaseStream.Position < reader.BaseStream.Length)
        {
            string[] line = reader.ReadLine().Split(delim, StringSplitOptions.None);

            if (line.Length > column) yield return line[column];
        }
    }
}