Laden...

Nach 2 Strings suchen und alle Zeilen dazwischen ausgeben

Erstellt von andre67 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.301 Views
Thema geschlossen
andre67 Themenstarter:in
15 Beiträge seit 2012
vor 11 Jahren
Nach 2 Strings suchen und alle Zeilen dazwischen ausgeben

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

49.485 Beiträge seit 2005
vor 11 Jahren

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

Thema geschlossen