在C#中按行和分隔符读取分隔的文本文件

时间:2015-04-09 21:18:18

标签: c# loops

我只是想为这个问题道歉,这里有很多这样的问题,但我找不到具体的问题。

我有一个列表,每个项目都包含DateTime,int和一个字符串。我已成功将所有列表项写入。逗号文件,该文件由逗号分隔。 例如09/04/2015 22:12:00,10,在Stackoverflow上发布。

我需要逐行遍历文件,每行从索引0开始,再到索引2.此时我能够调用索引03,它返回文本文件中第二个列表项的DateTime 。该文件是逐行写入的,但我很难用分隔符和换行符读回来。

如果我没有多大意义,我很抱歉,我将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:7)

string[] lines = File.ReadAllLines( filename );
foreach ( string line in lines )
{
  string[] col = line.Split( new char[] {','} );
  // process col[0], col[1], col[2]
}

答案 1 :(得分:2)

您可以通过var lines = File.ReadAllLines(pathToFile);一次阅读所有内容。然后,您可以通过以下方式将每一行拆分为一个字段数组:

foreach (var line in lines) {
    String[] fields = line.Split(',');
}

如果你的文件中没有任何流浪逗号,并且唯一的逗号是真正的分隔符,这意味着fields将始终是一个3元素数组,每个字段都连续出现。

答案 2 :(得分:0)

或者,您可以执行以下操作:

    public static List<Values> GetValues(string path)
    {
        List<Values> valuesCollection = new List<Values>();;

        using (var f = new StreamReader(path))
        {
            string line = string.Empty;
            while ((line = f.ReadLine()) != null)
            {
                var parts = line.Split(',');
                valuesCollection.Add(new Values(Convert.ToDateTime(parts[0]), Convert.ToInt32(parts[1]), parts[2]); 
            }
        }

        return valuesCollection;
    }

    class Values
    {
        public DateTime Date { get; set; }

        public int IntValue { get; set; }

        public string StringValue { get; set; }

        public Values()
        {
        }

        public Values(DateTime date, int intValue, string stringValue)
        {
            this.Date = date;
            this.IntValue = intValue;
            this.StringValue = stringValue;
        }
    }

然后,您可以遍历列表或值集合并访问每个对象及其属性。例如:

Console.WriteLine(values.Date);
Console.WriteLine(values.IntValue);
Console.WriteLine(values.StringValue);