StringBuilder oder StringCollection



  • Hallo!

    Ich möchte eine Textdatei Zeile für Zeile laden, diese dann durchsuchen und Teile davon herauskopieren, aber auch bestimmte Textabschnitte ersetzen können. Ich bin mir nun nicht sicher ob ich dafür auf die StringBuilder oder die StringCollection Klasse zurückgreifen soll. Die Operation ist zeitkritisch. Es macht mir nichts aus mehr Code zu schreiben, ich möchte aber auch nicht unbedingt unnötig viel Code schreiben.

    Danke schon mal im Voraus!



  • StringCollection hört sich Doch gut an der speichert doch wie der Klassenname schon sagt eine Menge von Strings!

    Jede Zeile also ein extra String (Datei zeilenweise einlesen und damit ein konkretes StringCollection - Object bilden. Ich wette du könntest dann auch über das StringCollection - Object direkt ablesen wiviele Zeilenumbrüche die Datei enthält. Also der Ansatz StringCollection klingt sher vielversprechend.

    mfg sclearscreen



  • Beispiel:

    // hoffe jetzt ich habe hier kein using vergessen
    using System;
    using System.Collection;
    using System.Collection.Specialized;
    
    System.IO.StreamReader streamReader = new System.IO.StreamReader(@"C:\text.txt");
    StringCollection stringCollection = new StringCollection();
    String zeile;
    
    while((zeile = streamReader.ReadLine()) != false)
    {
    stringCollection.Add(zeile);
    }
    
    int ZeilenAnzahl = stringCollection.Count;
    


  • Zeile fuer Zeile untersuchen kannst Du die Zeilen mit "Regulären Ausdrücken"
    da gibts auch ne Klasse:

    System.Text.RegularExpressions.Regex regex = new Regex(DeinEinzelnerString, RegulärerAusdruck);
    
    if(regex.IsMatch() == true)
    .... // gefunden in Zeile
    else
    ... // nicht gefunden in Zeile
    

    Der Code sieht doch kurz aus oder? Da kannst du auch noch ne Schleife rundrumbauen

    Der Parameter "RegulärerAusdruck" ist auch ein Objekt vom Typ String
    so etwa als beispiel:

    String RegulärerAusdruck = @".+@.+.+"; // damit könnte man nach Emailaddressen suchen
    

    mfg sclearscreen



  • String RegulärerAusdruck = @".+@.+.+"; // damit könnte man nach Emailaddressen suchen
    

    muss so aussehen

    String RegulärerAusdruck = @".+@.+\..+"; // damit könnte man nach Emailaddressen suchen
    

    dann findet man auch Strings die zum Muster einer gültigen Mailaddresse passen

    mfg 🙂



  • Vielen Dank für die Antwort mit den vielen Beispielen. Ich habe schon begonnen meinen StringCollection-spezifischen Code zu tippen :).



  • Oben in meinen Posting wo ich aus der Datei lesen!
    Da muss noch nen

    try
    {
       while((zeile=streamReader.ReadLine()) != false)
       {
       .
       .
       .
       }
    }
    catch(OutOfMemoryException noMemory)
    {
       .
       .
       .
    }
    catch(IOException ioException)
    {
       .
       .
       .
    }
    

    drumrum da ReadLine laut MSDN - Hilfe ne oder 2 Exception werfen kann
    gib einfach mal in der Hilfe ReadLine ein und guck dann bei den Hilfetreffern unter StreamReader.ReadLine-Methode
    Schaud dort mal den Abschnitt Ausnahmen an!!!

    mfg sclearscreen 😋 🙂

    P.S.: Sichere Software muss soviele Fehler wie möglich sicher händeln können
    und stabil bleiben


Anmelden zum Antworten