Beachten Sie, dass Textdateien inkonsistente Zeilenenden haben können. Ihr Programm sollte daran nicht ersticken. Die Verwendung von ReadLine
auf einem StreamReader
(und ähnlichen Methoden) sorgt automatisch für eine mögliche Zeilenendung.
Wenn Sie Zeilen manuell aus einer Datei lesen, müssen Sie beliebige Zeilenenden akzeptieren, auch wenn sie inkonsistent sind. In der Praxis ist dies mit dem folgenden Algorithmus sehr einfach:
Ich würde nur die Datei nach dem ersten \r
oder \n
durchsuchen und wenn es ein \n
wäre, würde ich mir das vorherige Zeichen ansehen, um zu sehen, ob es ein \r
ist, wenn ja, ist es \r\n
, sonst ist es das, was Sie gefunden haben.
Ich könnte mir vorstellen, dass Sie das nicht sicher wissen, müsste dies im Editor einstellen. Du könntest etwas KI verwenden, der Algorithmus wäre:
Wenn Sie beispielsweise CRLF-Wiederholungen bei 38, 40, 45 hatten und dies innerhalb der Toleranz war, nahmen Sie standardmäßig an, dass das Zeilenende CRLF war.
Wenn ich es wäre, würde ich die Datei nur ein Zeichen nach der anderen lesen, bis ich auf die erste \r
oder eine \n
stößt. Dies setzt voraus, dass Sie sinnvolle Eingaben haben.
Es gibt Environment.NewLine
, das dient nur dazu, zu bestimmen, was auf dem aktuellen System verwendet wird und hilft nicht beim Lesen von Dateien aus verschiedenen Quellen.
Wenn es liest, suche ich normalerweise nach \n
(Bearbeiten: apperantly gibt es einige, die nur \r
verwenden) und nehmen an, dass die Zeile dort endet.
Tags und Links c# text-files