Autor Beitrag
qwertz123
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 14.12.07 15:03 
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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 14.12.2007 um 14:09
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 14.12.07 15:11 
Hallo und :welcome:!

Mit einem StreamReader kannst Du die Zeilen einzeln einlesen:
ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 finden, danach ist der nächste Anlaufpunkt die Regex-Klasse im SDK.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 14.12.07 15:23 
user profile iconKhabarakh hat folgendes geschrieben:
Das geht noch kürzer mit File.ReadAllLines ;) .
Nur schrieb er, dass er genau das nicht will :zwinker:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
qwertz123 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
qwertz123 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 14.12.07 15:36 
wie lese ich die werte eine Zeile einzeln ein?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 14.12.07 15:40 
Lies die Zeile ein und kopiere die entsprechenden Stellen heraus:
ausblenden C#-Quelltext
1:
string autoName = eineZeile.SubString(9); //Bei Index 9 mit Kopieren anfangen					


Oder per RegEx, ein Tutorial dazu hat Khabarakh verlinkt.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
qwertz123 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 16.12.07 16:27 
user profile iconChristian S. hat folgendes geschrieben:
Lies die Zeile ein und kopiere die entsprechenden Stellen heraus:
ausblenden C#-Quelltext
1:
string autoName = eineZeile.SubString(9); //Bei Index 9 mit Kopieren anfangen					



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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 16.12.07 17:05 
user profile iconqwertz123 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
string currentItem;
foreach(string s in myArray) {
  currentItem = s.Substring(9);
}
// oder, wenn die Indizes wichtig sind:
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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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.