[gelöst] Im StreamReader formfeed finden



  • Eine erstellte Datei soll in einer MultiLine-TextBox ohne formfeed (ASCII 12) und ohne die nachfolgenden Zeilen von Überschriften
    angezeigt werden. Zur Zeit eliminiere ich nur das formfeed-Zeichen mit folgendem Code.

    FileStream   fs = new FileStream(Datei, FileMode.Open);
       StreamReader sr = new StreamReader(fs);
       string input;
       string text = "";
       int nr = 0;
       while (!sr.EndOfStream)
       {
           nr++;
           input = sr.ReadLine();
           input = input.Replace('\f', ' ');  // formfeed eliminieren
           text += "\r\n" + input;
       }
       textBox7.Text = text;   // Ausgabe der bereinigten Datei
       sr.Close();
       fs.Close();
    

    Wie finde ich mit if das formfeed und kann dann die gewünschte Anzahl von Zeilen aus der Darstellung in der TextBox entfernen?



  • Dann würde ich eher mittels Read() zeichenweise lesen und dann bei Formfeed die nächsten x Zeilen überlesen.
    Und um den Text zu erzeugen nimm statt 'string' besser den StringBuilder (damit nicht bei jedem Zeichen (bzw. jetzt bei dir bei jeder Zeile) ein neuer temporärer String erzeugt wird.



  • o.k. Danke für die Hinweise. Ich behalte aber lieber ReadLine statt Read und habe die Sache jetzt so gelöst.

    FileStream    fs = new FileStream(Datei, FileMode.Open);
       StreamReader  sr = new StreamReader(fs);
       StringBuilder sb = new StringBuilder();
       string input;
       while (!sr.EndOfStream)
       {
           input = sr.ReadLine();
           if (input.Length == 1)  // Formfeed + Überschrift eliminieren
           {                       // nur der Seitenwechsel hat die Länge 1
               sr.ReadLine();
               sr.ReadLine();
               sr.ReadLine();
           }
           else sb.AppendLine(input);
       }
       textBox7.Text = sb.ToString();
       sr.Close();
       fs.Close();
    

Log in to reply