Entwickler-Ecke
IO, XML und Registry - Aus Datei einlesen
qwertz123 - Fr 14.12.07 15:03
Titel: Aus Datei einlesen
Hallo,
habe eine Frage:
Gegeben ist eine Textdatei in folgendem Format (als Beispiel):
Autoname: Mercedes Benz
Typ: C Klasse
BinärKürzel: 0110110010
Eingelesen werden soll nicht immer die ganze Zeile (ReadAllLines...), sondern nur Mercedes Benz, C Klasse, und 0110110010 (einmal komplett und einmal dass evtl jede 0 bzw 1 in ein Array oder so geschrieben wird)
Danke
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Fr 14.12.2007 um 14:09
Christian S. - Fr 14.12.07 15:11
Hallo und :welcome:!
Mit einem StreamReader kannst Du die Zeilen einzeln einlesen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| using (StreamReader sr = new StreamReader(@"e:\meineDatei.txt") { while (!sr.EndOfFile) { string eineZeile = sr.ReadLine(); } } |
(ausm Kopf geschrieben, kann also noch Fehler enthalten)
Grüße
Christian
Kha - Fr 14.12.07 15:15
Das geht noch kürzer mit File.ReadAllLines ;) .
Aber die Aufgabe wär ein idealer Fall für Regular Expressions. Kein leichtes Thema, doch das Einarbeiten lohnt sich auf jeden Fall. Ein Tutorial lässt sich z.B.
hier [
http://www.regenechsen.de/phpwcms/index.php?regex_allg_einf] finden, danach ist der nächste Anlaufpunkt die Regex-Klasse im SDK.
Christian S. - Fr 14.12.07 15:23
Khabarakh hat folgendes geschrieben: |
Das geht noch kürzer mit File.ReadAllLines ;) . |
Nur schrieb er, dass er genau das nicht will :zwinker:
qwertz123 - Fr 14.12.07 15:32
Danke erstmal für die Antworten.
Um es nochmal zu verdeutlichen: Es soll nicht eingelesen werden: Name, Typ, Binärkürzel sondern die "Werte" dahinter
Christian S. - Fr 14.12.07 15:34
Das wird nicht klappen. Du musst die Daten davor lesen, weil Du sonst nicht weißt, wann die Werte anfangen.
qwertz123 - Fr 14.12.07 15:36
wie lese ich die werte eine Zeile einzeln ein?
Christian S. - Fr 14.12.07 15:40
Lies die Zeile ein und kopiere die entsprechenden Stellen heraus:
C#-Quelltext
1:
| string autoName = eineZeile.SubString(9); |
Oder per RegEx, ein Tutorial dazu hat Khabarakh verlinkt.
qwertz123 - So 16.12.07 16:27
Christian S. hat folgendes geschrieben: |
Lies die Zeile ein und kopiere die entsprechenden Stellen heraus:
C#-Quelltext 1:
| string autoName = eineZeile.SubString(9); |
|
Danke, hat mir weitergeholfen.
Leider funktioniert aber Substring nicht bei Arrays. Hab mir gedacht mit dem Befehl "ReadAllLines" die Zeilen in ein Array zu schreiben und Substring auf jede Zeile dann anwenden. Geht aber nicht.
Gibt es noch einen anderen Befehl der evtl so etwas kann?
JüTho - So 16.12.07 17:05
qwertz123 hat folgendes geschrieben: |
Leider funktioniert aber Substring nicht bei Arrays. Hab mir gedacht mit dem Befehl "ReadAllLines" die Zeilen in ein Array zu schreiben und Substring auf jede Zeile dann anwenden. Geht aber nicht. |
Natürlich geht das: Jedes Element des Array ist doch ein string, also funktioniert auch Substring. Beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| string currentItem; foreach(string s in myArray) { currentItem = s.Substring(9); } for(int x1 = 0; x1 < myArray.Length; x1++) { currentItem = myArray[x1].Substring(9); } |
Natürlich ist Array.Substring() Quatsch, aber String.Substring() ist bei
jedem String möglich. Du musst doch sowieso bei jedem Element genau darauf achten, um welchen Typ es sich handelt...
Jürgen
qwertz123 - So 16.12.07 17:30
Zitat: |
Natürlich ist Array.Substring() Quatsch, aber String.Substring() ist bei jedem String möglich. Du musst doch sowieso bei jedem Element genau darauf achten, um welchen Typ es sich handelt...
Jürgen |
Hey danke. So hatte ich das irgendwie auch, kam nur immer Fehler. War wohl eine Kleinigkeit. Vielen Dank dafür.
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!