2012-03-29 8 views
-7

Ich habe zwei Textfelder, in denen Benutzer ihren Pfad zu den Textdateien eingeben, um zu vergleichen. Wenn sie den Pfad eingeben, mache ich Folgendes, um den gesamten Inhalt jeder Datei zu erhalten, indem Zeile für Zeile gelesen und schließlich in Strings gehalten wird. Bis jetzt funktioniert es, aber ich muss die ersten 10 Zeichen von Datei2 nehmen und sehen, ob diese 10 Zeichen in Datei1 existieren, wenn es vorhanden ist, dann Zähler erhöhen, ansonsten gehe zu den nächsten 10 Zeichen von Datei2 und vergleiche siehe in Datei1. Es sollte bis zum Ende von Datei2 fortgesetzt werden.Vergleichen von zwei Textdateien in Windows-Anwendung

private void btnCompare_Click(object sender, EventArgs e) 
     { 
      string FilePath1 = txtFile1.Text; 
      string FilePath2 = txtFile2.Text; 
      string CompleteStringToCompare = ""; 
      string CompleteStringToCompareWith = ""; 
      int counter = 0; 



      //Read First file 
      if (!File.Exists(FilePath1)) 
      { 
       Console.WriteLine("{0} does not exist.", FilePath1); 
       return; 
      } 
      using (StreamReader sr1 = File.OpenText(FilePath1)) 
      { 
       string input1; 
       while ((input1 = sr1.ReadLine()) != null) 
       { 
        CompleteStringToCompare += input1; 
       } 
      } 

      //Read Second file 
      if (!File.Exists(FilePath2)) 
      { 
       Console.WriteLine("{0} does not exist.", FilePath2); 
       return; 
      } 
      using (StreamReader sr2 = File.OpenText(FilePath2)) 
      { 

       string input2; 
       while ((input2 = sr2.ReadLine()) != null) 
       { 
        CompleteStringToCompareWith += input2; 
       } 

      } 

Macht nichts, ich habe den Rest des Codes geschrieben, was ich brauchte. Hier ist sie:

  int length = int.Parse(txtNumberOfChar.Text); //Which is 10 in my case 
      int j = 1; 
      string temp = ""; 
      if (CompleteStringToCompareWith != "") 
      { 
       int totalSubStrings = CompleteStringToCompareWith.Length/length; 
       for (int i = 1; i <= totalSubStrings; i++) 
       { 
        if (i == totalSubStrings) 
         temp = CompleteStringToCompareWith.Substring(j, CompleteStringToCompareWith.Length - j); 
        else 
         temp = CompleteStringToCompareWith.Substring(j, length); 

        if (CompleteStringToCompare.Contains(temp)) 
         counter++; 
        j = j + length; 
       } 

       lblMessage.Text = "Total Matches "+ counter; 
      } 
+7

Wo ist die Frage? –

+0

Meine Frage ist, wie Zeichenfolge "CompleteStringToCompareWith" für jeweils 10 Zeichen durchlaufen und sehen, ob diese genau 10 Zeichen in der Zeichenfolge "CompleteStringToCompare" bis zum Ende der Zeichenfolge "CompleteStringToCompareWith" – Tiger

+1

Haben Sie versucht, es selbst zu versuchen? Ich sehe keinen Code in dem Block, den Sie gepostet haben, der dem sogar nahe kommt. –

Antwort

1
int length = int.Parse(txtNumberOfChar.Text); //Which is 10 in my case 
      int j = 1; 
      string temp = ""; 
      if (CompleteStringToCompareWith != "") 
      { 
       int totalSubStrings = CompleteStringToCompareWith.Length/length; 
       for (int i = 1; i <= totalSubStrings; i++) 
       { 
        if (i == totalSubStrings) 
         temp = CompleteStringToCompareWith.Substring(j, CompleteStringToCompareWith.Length - j); 
        else 
         temp = CompleteStringToCompareWith.Substring(j, length); 

        if (CompleteStringToCompare.Contains(temp)) 
         counter++; 
        j = j + length; 
       } 

       lblMessage.Text = "Total Matches "+ counter; 
      } 
Verwandte Themen