代码之家  ›  专栏  ›  技术社区  ›  fumiya azuma

在不读取新行c的情况下比较2个文件#

  •  1
  • fumiya azuma  · 技术社区  · 8 年前

    我如何在不读取换行符/返回符的情况下比较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 回复  |  直到 8 年前
        1
  •  1
  •   Denis Bubnov    8 年前

    尝试使用这部分代码,而不是您的(大 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 方法和花括号,并写出所有条件。

    推荐文章