用于解析文本文件的最佳C#文件类

时间:2012-05-09 14:44:22

标签: .net c#-4.0

我的文件中有以下文字

 Index: D:/QATV2Demo/Main.msbuild
===================================================================
--- D:/QATV2Demo/Main.msbuild   (revision 12414)
+++ D:/QATV2Demo/Main.msbuild   (revision 12416)
--- D:/QATV2Demo/Main.msbuild   (revision 12414)
+++ D:/QATV2Demo/Main.msbuild   (revision 12416)
@@ -39,7 +39,7 @@
  AssemblyFile="$(ToolsBinPath)\MSBuild.Community.Tasks.dll" />

-    <FxCop_CriticalErrors>10</FxCop_CriticalErrors>
 +    <FxCop_CriticalErrors>0</FxCop_CriticalErrors>


 <FxCop_Errors>0</FxCop_Errors>
 <FxCop_CriticalWarnings>0</FxCop_CriticalWarnings>
 <FxCop_Warnings>0</FxCop_Warnings>


  Index: D:/QATV2Demo/QATV2Demo/QATConstant.cs
===================================================================
--- D:/QATV2Demo/QATV2Demo/QATConstant.cs   (revision 12414)
+++ D:/QATV2Demo/QATV2Demo/QATConstant.cs   (revision 12416)
@@ -9,7 +9,7 @@
  {
     public static readonly string PAGE_DATA_DROP_DOWN_MODE = "D";
     public static readonly string PAGE_DATA_GRID_MODE = "G";
-        public static readonly string REPORT = "Report";
+        public static readonly string REPORT = "Report1";
    public static readonly string ITEM_COUNT = "ItemCount";
 }

}

现在我已经编写了自己的代码,它给出了结果,这是以 - 和+开头的行 它显示了文件的内容差异。

这是我的代码

 int counter = 0;
        string line;
        string filename = args[0].ToString();


        using (System.IO.StreamReader file = new StreamReader(filename))
        {
            while ((line = file.ReadLine()) != null)
            {
                if (line.StartsWith("- ")||line.StartsWith("+ "))
                {
                    Console.WriteLine(line.Trim('-',' ','+'));

                }
                counter++;
            }

            file.Close();
        }
        // Suspend the screen.
        Console.WriteLine(counter);

这是我使用的ruff代码。

请告诉我在这种情况下哪个网点类最适合我

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果代码符合您的要求,那么就没有必要更改解析。您可以使用File.ReadLines简化文件读取,如下所示:

foreach (var line in File.ReadLines(filename))
{
    if (line.StartsWith("- ") || line.StartsWith("+ "))
    {
        // do stuff here
    }
    ++counter;
}

除此之外,您没有说明一旦找到它们,您想要对添加和删除的行做什么。所以我不能在那里提出任何建议。