Entwickler-Ecke
Basistechnologien - Streamreader read ohne Textformatierung
kmkhl - Di 15.10.13 16:25
Titel: Streamreader read ohne Textformatierung
Hallo :)
ich lese mit einem Streamreader Zeile für Zeile ein rtf Dokument.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| StreamReader reader = new StreamReader(Path.Combine(pfad));
while ((line = reader.ReadLine()) != null) { if (line.Contains("hallo")) { string ausgabe = line; } }
MessageBox.Show(ausgabe); |
Das Ergebnis sieht dann ungefähr so aus:
\pard\keepn\wodctlpar\s1\sb240[...]hallo\cf2\kerning0\[...]
Ich würde aber gerne nur das 'hallo' aus der Zeile angezeigt bekommen.
Ich habe jetzt auch schon mit 'Replace' und 'Regex' rumgespielt, aber das macht Probleme aufgrund der Backslashs und ich denke das es doch auch weniger umständlich geht, oder?
Danke für Eure Hilfe!
Ralf Jansen - Di 15.10.13 16:36
Zitat: |
Ich würde aber gerne nur das 'hallo' aus der Zeile angezeigt bekommen. |
Das wär einfach ;)
C#-Quelltext
1: 2: 3: 4:
| if (line.Contains("hallo")) { string ausgabe = "hallo"; } |
kmkhl - Di 15.10.13 16:47
:D
nein das war ja nur eine vereinfachte Darstellung von meinem Code.
In meinem richtigen Code ist 'hallo' = 'Autonummer' und die Nummer die hinter 'Autonummer' steht unterscheidet sich natürlich immer. Die brauche ich.
Würde also wie gewollt nur 'Autonummer 00.00.00' angezeigt werden, hätte ich kein Problem. Stattdessen kommt \
pard\keepn\wodctlpar\s1\sb240[...]Autonummer 00.00.00\cf2\kerning0\[...]
:suspect:
Ralf Jansen - Di 15.10.13 17:05
C#-Quelltext
1: 2: 3: 4: 5: 6:
| string text = File.ReadAllText(Path.Combine(pfad)); Regex regex = new Regex(@"Autonummer\s\d{2}\.\d{2}\.\d{2}"); foreach (Match match in regex.Matches(text)) { MessageBox.Show(match.Value); } |
kmkhl - Di 15.10.13 17:28
das haut nicht hin. Er zeigt nichts
Edit: das haut hin. Er zeigt was an.
Allerdings kann die Zahlenfolge unterschiedlich sein...
Beispiel:
Autonummer 1.2.3
Autonummer 1.2.33
Ralf Jansen - Di 15.10.13 17:47
Tja ohne ~genaue~ Definition was da kommen kann gibt es auch keinen passenden Regex :(
Probier mal folgendes das würde zumindest deine Beispiele matchen.
C#-Quelltext
1:
| Regex regex = new Regex(@"Autonummer\s\d{1,2}\.\d{1,2}\.\d{1,2}"); |
Delete - Di 15.10.13 17:51
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Di 15.10.13 19:39
Wie genau kann die Zeichenfolge denn aussehen?
Ist sicher, dass es immer zwei Zahlen in Folge, getrennt durch Punkte sind, oder irgendwas Anderes?
Das einzige, was mir da noch einfällt, wäre, dass du alle Zeichenketten ausgeben lässt, die zwischen "Autonummer" und dem ersten darauf folgenden Backslash stehen.
Leider bin ich in Regex nicht fit genug um das mal eben so hin zu schreiben, aber vielleicht hilft die Idee ja schon weiter.
@ Frühlingsrolle:
Den Sinn hinter deiner Methode verstehe ich nicht so ganz.
Am einfachsten ist das Auslesen von Zeilen aus einer Datei wahrscheinlich diese Methode:
File.ReadLines [
http://msdn.microsoft.com/de-de/library/vstudio/dd383503.aspx]
Allerdings ist ja auch das Hauptproblem, dass er eine bestimmte Nummer an einer bestimmten Stelle in jeder Zeile finden möchte, oder habe ich da was falsch verstanden?
Delete - Di 15.10.13 19:59
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007 - Di 15.10.13 20:11
Für mich sieht das nach einem Pfad aus.
Naja, lassen wir den Thread-Ersteller entscheiden ^^
Ich hab mich jetzt auch doch mal daran versucht, meine Idee mit Regex zu lösen, und bin zu diesem Ergebnis gekommen:
C#-Quelltext
1:
| var regex = new Regex(@"Autonummer\s[\.0-9^\\]+"); |
Bei dieser Zeichenfolge:
Quelltext
1:
| pard\keepn\wodctlpar\s1\sb240[...]Autonummer 00.00.00\cf2\kerning0\[...] |
bekomme ich dann dieses Ergebnis:
Wie ich verhindern kann, dass "Autonummer" und der Backslash mit drin stehen, weiß ich nicht, aber zur Not ist das in C# dann auch schnell gelöst.
jaenicke - Di 15.10.13 23:17
Palladin007 hat folgendes geschrieben : |
Für mich sieht das nach einem Pfad aus. |
Das ist kein Pfad, das sind RTF-Formatierungen...
Er hat doch auch selbst geschrieben, dass es ein RTF Dokument ist. Und das als normales Textdokument zu lesen ist schlicht nicht sinnvoll. Wie es richtig geht hat
Frühlingsrolle ja schon geschrieben.
Palladin007 - Di 15.10.13 23:37
:autsch:
Hab ich natürlich völlig überlesen -.-
Nagut, hätte aber auch nix geändert, da ich bisher noch nie mit rtf-Dateien gearbeitet habe.
Aber gut, wenn es so dann funktioniert und die Frage geklärt ist. ^^
kmkhl - Mi 16.10.13 08:39
Guten Morgen :)
zunächst einmal habt ihr alle etwas falsch verstanden, ich bin nämlich nicht "er" sondern "sie". ;)
"So wie ich das verstanden habe, möchte er eine .rtf Datei auslesen.
Jedoch kommt ihm dabei ein kryptischer Text entgegen."
genau so ist es
@Frühlingsrolle: vielen Dank, das ist die Lösung die ich brauche. :)
und danke auch den anderen für Eure Bemühungen :]
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!