C#如何使用foreach循环首先从数组[1]读取而不是数组[0]?

时间:2010-11-24 06:05:14

标签: c# arrays foreach

我对从文本日志文件转换的数组的读取顺序有疑问。

由于在第一行[0]中的过程中我不需要读取文件头,是否有任何方法可以跳过读取行[0]并首先开始读取行[1]?

该程序利用foreach循环读取数组。并且有一种标记方法,因此标记化需要foreach循环来记录数组的String格式。

请通过建议代码帮助我们!谢谢!

程序代码:

class Program
{
    static void Main(string[] args)
    {
        System.Collections.Generic.IEnumerable<String> lines = File.ReadLines("C:\\syscrawl\\ntfs3.txt");

        foreach (String r in lines) //Start reading from lines[1] first instead?
        {
            String[] token = r.Split(',');
        }
    }
}

如果你需要日志文本文件,这是一个例子:

Date,Size,Type,Mode,UID,GID,Meta,File Name // Lines[0]
Sun Jul 22 2001 02:37:46,73882,...b,r/rrwxrwxrwx,0,0,516-128-3,C:/WINDOWS/Help/digiras.chm // Lines [1]
Sun Jul 22 2001 02:44:18,10483,...b,r/rrwxrwxrwx,0,0,480-128-3,C:/WINDOWS/Help/cyycoins.chm
Sun Jul 22 2001 02:45:32,10743,...b,r/rrwxrwxrwx,0,0,482-128-3,C:/WINDOWS/Help/cyzcoins.chm
Sun Jul 22 2001 04:26:14,174020,...b,r/rrwxrwxrwx,0,0,798-128-3,C:/WINDOWS/system32/spool/drivers/color/kodak_dc.icm

2 个答案:

答案 0 :(得分:6)

使用Skip扩展名方法。 E.g。

foreach (String r in lines.Skip(1)) //Start reading from lines[1] first instead
{
   String[] token = r.Split(',');
}

如果要检查行而不是依赖计数,可以使用SkipWhile。 E.g。

foreach (String r in lines.SkipWhile(l => l.StartsWith(HeaderInfo)) 
{
   String[] token = r.Split(',');
}

答案 1 :(得分:3)

使用.Skip

foreach (String r in lines.Skip(1))