String Linienweise lesen...

From: Mirco Kaffsach (_at_web.de)
Date: 12/03/04


Date: Fri, 3 Dec 2004 16:42:40 +0100

Hi @all,

ich habe ein kleines Problem.
Ich habe einen String, der mitunter bis zu ca. 1.000 Zeilen mit Text
enhalten kann. Dieser String hat am Anfang einer Zeile immer eine "ID" und
dahinter steht dann eine Information. Wenn die Information eine gewisse
anzahl von Zeichen überschreitet, wird sie in der nächste Zeile ohne "ID"
weitergeführt. Als erstes Zeichen in der Zeile steht dann entweder ein Blank
oder ein Tabulator.

Aufbau:

neueID:[blank]Information\r\n
neueID:[blank]Information\r\n
[tabulator oder blank]weitere Information zur gleichen ID wie zeile
zuvor\r\n
[tabulator oder blank]weitere Information zur gleichen ID wie zeile
zuvor\r\n
neueID:[blank]Information\r\n
neueID:[blank]Information\r\n

Beispiel:
...
Ort: Wuppertal
Plz: 42111
Kommentar: Blablabla
    blablabla
Geburtstag: 21.05.1978
...

Wenn ich jetzt eine funktion schreiben möchte die diese Infos alle in die
Eigenschaften meiner Klasse einträgt, wird das in meinen Augen etwas
unkonventionell, so wie ich es momentan mache.

Momentan mache ich das mit einem StreamReader und ReadLine. Dort gehe ich
dann jede einzelne Zeile durch und ordne sie anhand der "IDs" den
Eigenschaften zu. Ich finde dieses allerdings ein wenig performance lastig.
Gibt es nicht eine möglichkeit sowas änliches wie IndexOf zu benutzen, der
dann direkt die ganze Zeile liest, also bis zum "\r\n"???

Hier mal ein wenig PseudoCode wie ich das meine.

string test = "Ort: Wuppertal\r\n
Plz: 42111\r\n
Kommentar: Blablabla\r\n
\tblablabla\r\n
Geburtstag: 21.05.1978\r\n";

if ( test.IndexOf( "Plz:" ) > -1 )
    dann lese diese komplette Zeile an der sich Plz: befindet.

if ( test.IndexOf( "Kommentar:" ) > -1 )
{
    dann lese diese komplette Zeile an der sich Kommentar: befindet.
    lese solange die nächsten Zeilen bis nicht mehr " " oder "\t" als erstes
Zeichen vorhanden ist.
}

Ich hoffe ihr versteht mich und könnt mir ein wenig weiterhelfen. Meine
Version klappt zwar momentan, aber angesichts der bis zu 1000 Zeilen, würde
ich mich fragen ob es da nicht auch noch elegantere Arbeitsweisen gibt.

Gruß und Danke Mirco



Relevant Pages

  • Re: Schnellste Moeglichkeit Buchstaben in einem String zu finden?
    ... Also braucht es mindestens deshalb einen Kommentar. ... Außerdem braucht es den wegen der Beschränkung der Allgemeinheit, weil Nullen im String anders als man es erwartet nun doch verboten sind. ... auch die Deklaration des Eingabeparameters als PChar ... String", wir sind keine C-ler. ...
    (de.comp.lang.delphi.misc)
  • Re: mutige Behauptung?
    ... gerade ist, dann ists ein Kommentar. ... Wenn Du von vorne nach hinten durch die Codezeile durchwanderst, musst Du Dir also merken, ob Du in einem String drin bist. ... Schau' Dir mal diesen Code an: ... Dim blnInComment As Boolean ...
    (microsoft.public.de.access)
  • Re: Compare Two Strings
    ... file in strFileName(it's string) and html file in strFileName(It's ... click the compare button then if that data correct in html file then ... monday.if u understood my prob then plz give me solution with code..if ... and the second string a html file is there.now i want to compare to ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Selbstdefinierte Datenklasse als Array
    ... String nachname; ... als Array verwenden. ... Adresse die Klasse Array erweitern. ... Btw. ist es keine gute Idee, eine PLZ als ...
    (de.comp.lang.java)
  • Mehrere Zeilen auf einmal in eine Tabelle einfügen
    ... Als Parameter würde ich dann dieser GP den String ... mit allen PLZ durch Komma getrennt, ... weiss ich nicht wie du diesen String dann splitten kannst, ...
    (microsoft.public.de.sqlserver)