2017-01-30 4 views
-1

Zunächst einmal bin ich sehr neu mit Codierung und auf der Anfängerstufe in C#. Ich schaue mir die Fragen an, konnte aber keine passende Antwort auf meine Frage finden oder habe sie nicht verstanden..csv Datei mit Streamreader in c lesen #

Ich habe eine .csv-Datei und die Zeilen in den Dateien sind wie folgt. Ich bekomme den Längengrad mit float longitude = float.Parse(read[1]); Aber ich möchte auch die Zahl "3" im Beispiel unten erhalten. Meiner Meinung nach kann ich den Wert mit float.Parse(read[12]) erhalten. Diese Nummer befindet sich im 12. Index in der Zeile. Aber ich kann diese Nummer nicht mit float.Parse(read[12]) erreichen. Wenn ich float.Parse(read[9]) verwende, kann ich die 3 erhalten. Dieser Code liest die fehlenden Werte zwischen Kommas nicht. Wie kann ich alle Daten mit fehlenden Werten lesen? Weil die anderen Zeilen unterschiedlich sind und sich fehlende Werte ändern. Einige der Zeilen enthalten keine Datumsinformationen, einige enthalten keine Längeninformationen.

0000000,26.0000000,38.000000,30.01.2017,0,0,0 ,,, 0,0,, 3, 0,0,0,0

string[] read; 
char[] seperators = { ',' }; 

StreamReader sr = new StreamReader("D:/xxx.csv"); 

string data = sr.ReadLine(); 

while ((data = sr.ReadLine()) != null) 
{ 
    read = data.Split(seperators,StringSplitOptions.RemoveEmptyEntries); 
    float longitude = float.Parse(read[1]); 
    float latitude = float.Parse(read[2]); 
} 
+3

_ „Dieser Code ist nicht die fehlende Werte zwischen Kommata Lese“ _ - bitte lesen [fragen] und [MCVE] und ** ** zeigt der entsprechende Code. – CodeCaster

+1

add in wie erhalten Sie Ihre 'read []' – Jacky

+0

StreamReader sr = new StreamReader ("Dokument Pfad"); Zeichenfolge data = sr.ReadLine(); while ((daten = sr.ReadLine())! = Null) { lesen = data.Split (seperators, StringSplitOptions.RemoveEmptyEntries); Float Longitude = float.Parse (lesen [1]); Float Breite = float.Parse (lesen [2]); } – Burak

Antwort

2

Diese Linie

read = data.Split(seperators, StringSplitOptions.RemoveEmptyEntries); 

sagt:

Wenn es zwei Kommas, ein Recht nach dem anderen, ignorieren Sie den Eintrag

daher Ihre Eingabe wird:

0000000,26.0000000,38.000000,30.01.2017,0,0,0,0,0,3,0,0,0,0

Was Sie wirklich wollen, ist dies, die leere Werte im Array verlässt

read = data.Split(seperators, StringSplitOptions.None); 
+0

vielen Dank für die Hilfe. – Burak

0

der Fehler wird diese Zeile:

read = data.Split(seperators,StringSplitOptions.RemoveEmptyEntries); 

Sie sagen es, um die leeren Werte zu entfernen. Die fehlenden, die du haben willst. Ändern es

read = data.Split(seperators,StringSplitOptions.None); 
+0

vielen Dank für die Hilfe. – Burak