2017-09-15 2 views
0

Ich benutze TextFieldParser, um eine CSV-Datei zu lesen. Diese besondere Spalte in der CSV enthält Zahlen: 3,14, 2,65, etc. Ich bin, sie als solche zu lesen:TextFieldParser fügt Nullen zur Nummer in CSV hinzu

 var path = @"C:\myfiles\file.csv"; 
     using (TextFieldParser csvParser = new TextFieldParser(path)) 
     { 
      csvParser.SetDelimiters(new string[] { "," });     

      csvParser.ReadLine(); 

      var numbers = new string[5]; 
      numbers[0] = csvParser.ReadFields()[23]; 
      numbers[1] = csvParser.ReadFields()[23]; 
      numbers[2] = csvParser.ReadFields()[23]; 
      numbers[3] = csvParser.ReadFields()[23]; 
      numbers[4] = csvParser.ReadFields()[23]; 

      return numbers; 
     } 

Dies funktioniert, aber die Saiten, die ich bin immer wieder haben zwei Nullen angehängt; dh. 3.14 wird als "3.1400" zurückgegeben. Gibt es einen Grund dafür? Eine Konfigurationsoption für den TextFieldParser, vielleicht?

+0

Der 'TextFieldParser' ist anschwellend, gibt aber nur Strings zurück. Andere Werkzeuge wie 'CSVHelper' zum Beispiel geben eigenschaftsgetippte Daten und Sammlungen zurück. – Plutonix

+0

Keine Sorge, ich muss trotzdem etwas String-Manipulation an den Ergebnissen vornehmen. – opticon

+0

Dumme Frage, aber sind Sie sicher, dass die Textdatei selbst nicht die zusätzlichen Nullen hat? Das ist am sinnvollsten, vor allem, wenn es sich hier um gerade "Streicher" handelt. – pinkfloydx33

Antwort

1

Sie könnten versuchen, die zurückgegebenen Strings zu analysieren wie diese schwimmt:

parseFloat(csvParser.ReadFields()[23]);

In diesem Fall können Sie Ihre Array-Typ von String-Nummer ändern sollte. Oder generieren Sie erneut eine Zeichenfolge mit toString() -Methode nach dem Parsing zu float.

0

Mein Gefühl ist, dass der Code ohne die zusätzliche nachgestellte "00" funktioniert. Wenn Sie für jede der Zahlen [x] einen Haltepunkt setzen, werden Sie feststellen, dass er keine zusätzlichen Zeichen enthält. Mein Gefühl ist, dass Ihr Fehler an anderer Stelle ist ...

Zumindest, wenn ich den Code in LINQPad repliziert, es führte nicht den Fehler, den Sie beschreiben ...

0

Wenn Sie die CSV-Datei in Excel erstellt Es ist berüchtigt dafür, zusätzliche Nullen hinzuzufügen und zeigt sie nicht über ihre Benutzeroberfläche an.

Versuchen Sie, Ihren Datensatz im Editor oder noch besser Notepad neu zu erstellen ++.

Verwandte Themen