2016-11-11 5 views
0

I‘versuchen, alle doppelten Zeilen von kleinen Textdokument zu entfernen, mit 300 Zeilen:alle doppelten Zeilen aus einem Textdokument

 string[] lines = File.ReadAllLines("doc1.txt"); 
     File.WriteAllLines("doc1.txt", lines.Distinct().ToArray()); 

und auf diese Weise:

 List<string> lines = File.ReadAllLines(mypath).ToList(); 
     File.WriteAllLines(mypath, lines.Distinct().ToArray()); 

aber nur einige Zeilen entfernt, Duplikate sind immer noch da, scheint in zwei Fällen, wenn Duplikate nahe beieinander liegen, oder wenn sie zu weit voneinander entfernt sind. Nicht sicher, was ich falsch mache

alle Zeilen in Kleinbuchstaben ohne Interpunktion, erlaubt nur einen Leerraum zwischen Wörtern und mit trimmen für die letzte und erste Leerzeichen oder Satzzeichen in der Zeichenfolge.

Also, wenn ich zwei ähnliche Zeilen nacheinander habe, funktioniert dieser Code nicht für mich, wenn ein Duplikat nach anderen Zeichenketten vor seinem Doppel liegt, dann funktioniert, und wenn Duplikat ist Zeile 7 in der Reihenfolge und ist gleich Zeile 287, funktioniert nicht

+1

Haben Sie überprüft Hinter/führende weiß Räume? –

+0

Wenn Sie keine führenden und nachgestellten Leerzeichen berücksichtigen möchten, können Sie 'lines.Select (l => l.Trim()) verwenden. Distinct(). ToArray()' –

+0

Ich habe Folgendes zum Testen erstellt was Sie erleben: 'var lines = Enumerable.Range (1, 300) .Wählen Sie (i =>" line "+ i). ToArray(); Linien [6] = Linien [286] = "identische Linien"; var distinctLines = Zeilen.Distinct(). ToArray(); '. Basierend auf dem, was Sie erlebt haben, würde das 'distinctLines'-Array immer noch 300 Elemente haben, aber wenn Sie das Snippet ausführen, finden Sie es nur 299. –

Antwort

0

Vielleicht sind die Zeilen nicht genau die gleichen, es könnte führende/nachlaufende Leerzeichen geben.

Sie können weiß Räume entfernen, indem das Trim() Methode auf den string Objekte Aufruf einer Linie, die:

File.WriteAllLines("doc1.txt", lines.Select(line => line.Trim()).Distinct().ToArray()); 
Verwandte Themen