Autor Beitrag
kmkhl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28
Erhaltene Danke: 3

Win 95, Win XP, Win Vista, Win 7, Win 8, Win 8.1
Visual Basic, C#, PHP
BeitragVerfasst: Di 15.10.13 16:25 
Hallo :)

ich lese mit einem Streamreader Zeile für Zeile ein rtf Dokument.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 15.10.13 16:36 
Zitat:
Ich würde aber gerne nur das 'hallo' aus der Zeile angezeigt bekommen.


Das wär einfach ;)

ausblenden C#-Quelltext
1:
2:
3:
4:
if (line.Contains("hallo"))
{
    string ausgabe = "hallo";
}
kmkhl Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28
Erhaltene Danke: 3

Win 95, Win XP, Win Vista, Win 7, Win 8, Win 8.1
Visual Basic, C#, PHP
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 15.10.13 17:05 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28
Erhaltene Danke: 3

Win 95, Win XP, Win Vista, Win 7, Win 8, Win 8.1
Visual Basic, C#, PHP
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

ausblenden C#-Quelltext
1:
Regex regex = new Regex(@"Autonummer\s\d{1,2}\.\d{1,2}\.\d{1,2}");					
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 15.10.13 17:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: kmkhl
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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

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?
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 15.10.13 19:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
var regex = new Regex(@"Autonummer\s[\.0-9^\\]+");					


Bei dieser Zeichenfolge:

ausblenden Quelltext
1:
pard\keepn\wodctlpar\s1\sb240[...]Autonummer 00.00.00\cf2\kerning0\[...]					


bekomme ich dann dieses Ergebnis:

ausblenden Quelltext
1:
Autonummer 00.00.00\					


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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 15.10.13 23:17 
user profile iconPalladin007 hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconFrühlingsrolle ja schon geschrieben.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28
Erhaltene Danke: 3

Win 95, Win XP, Win Vista, Win 7, Win 8, Win 8.1
Visual Basic, C#, PHP
BeitragVerfasst: 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 :]

Für diesen Beitrag haben gedankt: jaenicke