比较2个文件而不读新行c#

时间:2017-09-18 17:27:13

标签: c# file c#-4.0 compare string-comparison

如何在不读取换行符/ Return的情况下比较2个文件。有些情况下它没有比较新行。
注意:如果要测试此代码,请在数组目录中的文件中使用许多空格/字符串。 实施例

这是当前的情景

        File 1|File2
        ---   | ---
line1   Hello1|Hello4
line2   Hello1|Hello1
line3         |
line4   Hello2|Hello2

输出将放在另一个文本文件中。

    Expected Output : 
    FROM File2. Line 1 : Hello4

    Current Output: 
    FROM File2. Line 1  : Hello4
    FROM File2. Line 3  : 

代码:

 for (int ctr = 0; ctr <= arrayrows - 1; ctr++)
        {
            for (int ctr2 = 0; ctr2 <= arraycolumns - 1; ctr2++)
            {


                if (File.Exists(path + @stringArray[ctr, ctr2]))
                {
                    string[] File1Lines = File.ReadAllLines(path + @stringArray[ctr, ctr2]);
                    string[] File2Lines = File.ReadAllLines(path + @stringArray2[ctr, ctr2]);
                    List<string> NewLines = new List<string>();

                    if (File1Lines.Length >= File2Lines.Length)
                    {
                        greaterindex = File1Lines.Length;
                    }
                    else if (File2Lines.Length >= File1Lines.Length)
                    {
                        greaterindex = File2Lines.Length;
                    }

                    for (int lineNo = 0; lineNo <= greaterindex - 1; lineNo++)
                    {

                        if (lineNo > (File2Lines.Length - 1))
                        {
                            NewLines.Add("FROM File1. Line " + lineNo + ": " + File1Lines[lineNo]);
                        }
                        else if (lineNo > (File1Lines.Length - 1))
                        {
                            NewLines.Add("FROM File2. Line " + lineNo + ": " + File2Lines[lineNo]);
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(File1Lines[lineNo]) && !String.IsNullOrEmpty(File2Lines[lineNo])) //kapag ung same line sa 2 files hindi null
                            {

                                if (String.Compare(File1Lines[lineNo], File2Lines[lineNo]) != 0)
                                    NewLines.Add("FROM File2. Line " + lineNo + ": " + File2Lines[lineNo]);

                            }
                            else if (!String.IsNullOrEmpty(File1Lines[lineNo])) //kapag ung particular line sa file 2 null
                            {
                            }
                            else //kapag ung particular line sa file 1 null
                            {
                                NewLines.Add("FROM File2. Line " + lineNo + ": " + File2Lines[lineNo]);
                                /*NewLines.Add("==========Discrep Found========");
                                NewLines.Add("FROM File2: " + File2Lines[lineNo]);
                                NewLines.Add("FROM File1: " + File1Lines[lineNo]);
                                NewLines.Add("===============================");*/
                            }
                        }

                    }

1 个答案:

答案 0 :(得分:1)

尝试使用此部分代码而不是您的(大else块):

if (!String.IsNullOrWhiteSpace(File1Lines[lineNo]) && 
    !String.IsNullOrWhiteSpace(File2Lines[lineNo]))
{
    if (String.Compare(File1Lines[lineNo], File2Lines[lineNo]) != 0)
    {
        NewLines.Add("FROM File2. Line " + lineNo + ": " + File2Lines[lineNo]);
        continue;
    }
}
else if (!String.IsNullOrWhiteSpace(File1Lines[lineNo])) 
{
    NewLines.Add("FROM File1. Line " + lineNo + ": " + File2Lines[lineNo]);
    continue;
}
else if (!String.IsNullOrWhiteSpace(File2Lines[lineNo])) 
{
    NewLines.Add("FROM File2. Line " + lineNo + ": " + File2Lines[lineNo]);
    continue;
}

使用continue语句和String.IsNullOrWhiteSpace方法以及大括号并写下所有条件。