Wie kann ich eine Zeichenfolge trennen (','), während Kommas zwischen Anführungszeichen ignoriert werden?

8

Ich verwende die .Split(',') -Methode für eine Zeichenfolge, von der ich weiß, dass sie durch Kommas getrennt ist, und ich möchte, dass diese Werte getrennt und in ein string[] -Objekt eingefügt werden. Das funktioniert hervorragend für Strings wie diese:

78,969.82,GW440, .

Aber die Werte sehen anders aus, wenn der zweite Wert über 1000 geht, wie in diesem Beispiel:

79,"1,013.42",GW450,... .

Diese Werte stammen aus einem Tabellenkalkulations-Steuerelement, wo ich die in ExportToCsv(...) -Methode eingebauten Steuerelemente verwende und das erklärt, warum eine formatierte Version des tatsächlichen numerischen Werts vorliegt.

Frage

Gibt es eine Möglichkeit, mit der Methode .Split(',') Kommas innerhalb von Anführungszeichen zu ignorieren? Ich möchte eigentlich nicht, dass der Wert "1,013.42" als "1 und 013.42" aufgeteilt wird.

Irgendwelche Ideen? Danke!

Aktualisieren

Ich würde das wirklich gerne machen, ohne ein Drittanbieter-Tool zu verwenden, da mein Anwendungsfall wirklich nicht viele andere Fälle außer diesem beinhaltet und obwohl es ein Teil der Lösung meiner Arbeit ist, ein solches Tool nicht zu verwenden. t tu wirklich jemand im Moment. Ich hatte gehofft, dass es schnell etwas zu lösen gibt, was ich verpasst habe, aber jetzt, da es Wochenende ist, werde ich sehen, ob ich diese Frage am Montag mit der Lösung, die ich schließlich bekomme, nicht noch einmal aktualisieren kann hoch mit. Vielen Dank für Ihre Unterstützung bis jetzt, ich werde jede Antwort am Montag weiter bewerten.

    
Jake Smith 24.01.2014, 21:37
quelle

3 Antworten

7

Dies ist eine ziemlich einfache CSV-Reader-Implementierung, die wir hier in einigen Projekten verwenden. Einfach zu bedienen und handhabt die Fälle, von denen Sie sprechen.

Zuerst die CSV-Klasse

%Vor%

Dann eine ziemlich schöne Reader-Implementierung - Wenn Sie es brauchen. Sie sollten in der Lage sein, mit der oben genannten CSV-Klasse genau das zu tun, was Sie brauchen.

%Vor%

Dann kannst du es so benutzen.

%Vor%

Hinweis: Dies würde eine vorhandene CSV-Datei öffnen, kann aber relativ einfach geändert werden, um ein string[] zu verwenden, wie Sie es brauchen.

    
Evan L 24.01.2014, 21:47
quelle
3

Da Sie eine CSV-Datei lesen, ist es am besten, einen vorhandenen CSV-Reader zu verwenden. CSV bietet mehr als nur Kommas zwischen Anführungszeichen. Die Suche nach all den Fällen, die Sie bearbeiten müssen, wäre mehr Arbeit als es wert ist.

Hier ist eine CSV-Leserfrage zu SO.

    
Jon B 24.01.2014 21:40
quelle
0

Sie sollten diesen Artikel wahrscheinlich lesen: Regular Expression für das komma-basierte Teilen Ignorieren von Kommas innerhalb von Anführungszeichen Obwohl es für Java ist, ist der reguläre Ausdruck derselbe.

    
Paweł Bejger 24.01.2014 21:40
quelle

Tags und Links