Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Nach 2 Strings suchen und alle Zeilen dazwischen ausgeben
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

Nach 2 Strings suchen und alle Zeilen dazwischen ausgeben

beantworten | zitieren | melden

Hallo liebe Leute,

folgendes Problem:
Ich habe eine Textdatei (etwa 50 MB) mit folgendem, sich immer wiederkehrendem, Aufbau
			(unwichtiger Text)
...............................................................
[14:03:37] Job(
            Results:
                 [ TEXT     ]  TEXT TEXT
                 [ WORD    ] TEXT TEXT
                 [ INTEGER ] TEXT TEXT
[14:03:38]	StateExt()
			(unwichtiger Text)

Das ganze wiederholt sich ein paar hundert Mal in der Datei mit jeweils unwichtigem Text dazwischen.
Ich möchte nun in meiner Form (meinetwegen TextBox) jeweils alle Zeilen von den Punkten (die grundsätzlich am Anfang des wichtigen Textes stehen) bis ausschließlich "StateExt()" ausgeben lassen. Die Punkte sind auch nicht unbedingt wichtig, würden nur der Übersicht in der Ausgabe dienen. In den wichtigen Zeilen kommen zwar Phrasen vor, die ich auch gerne weglassen würde, aber das würde wahrscheinlich zu kompliziert.

Keine Ahnung wie ich das angehen soll. Meine Google-Suche bringt mich auch nicht weiter.
Mein Quelltext sieht bisher so aus:


~~~
private Regex suchPhrase = new Regex(@"\.\.\.\.\.\.");
~~~
using (StreamReader strReader = new StreamReader("Datei.txt"))
            {
                string zeile;
                while ((zeile = strReader.ReadLine()) != null)
                {
                    Match treffer = suchPhrase.Match(zeile);
                    if (treffer.Success)
                    {
                        this.count++;
                        string wert = treffer.Groups[1].Value;
                        this.txtAusgabe.Text += "Treffer: " + zeile + "\t" + wert + Environment.NewLine;
                    }
                }
            }
~~~

Man kann sich vorstellen, dass ich hier nur jeweils die Punkte-Zeile und einige hundert Zeilen, in denen zufällig sechs Punkte stehen, herausbekomme.

Kann mir jemand einen Tipp geben, wie ich jeweils den wichtigen Bereich ausgeben lassen kann?

Vielleicht hat auch jemand ne Idee, wie die Ausgabe am besten realisiert werden kann. Eine Textbox wird ja auch dementsprechend lang. Vielleicht ein Element, in dem ich den jeweiligen Treffer anklicken kann und dann dorthin springe o.Ä.

Vielen Dank für Eure Mühe!
Andre
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo andre67,

das ist ein Standardproblem, für das es viele Lösungsmöglichkeiten gibt. Natürlich geht das auch (ziemlich einfach) mit einem passenden Regex-Pattern, siehe z.B. [Artikel] Regex-Tutorial und On-the-fly Regex-Tester: Regex-Lab. Aber auch mit den normalen String-Operationen (z.B. IndexOf/Substring) bekommt man das ohne Weiteres hin.

Jedenfalls wenn man die Grundlagen beherrscht, die wir als bekannt voraussetzen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore
private Nachricht | Beiträge des Benutzers