2 Stimmen

Komma durch Semikolon zwischen den Kontingenten ersetzen

Ich habe eine csv-Datei, aus der ich die Daten in eine Tabelle bekomme. Beispiel: "ABC",1, "Apple" Die Anforderung ist, dass die Zeichenketten innerhalb der Anführungszeichen " " und die ganzen Zahlen ohne Anführungszeichen sein müssen. Die obige Zeile wird in drei Spalten aufgeteilt. Ich verwende die Stream-Reader-Klasse, um die Zeile mit line.split(',') in Spalten aufzuteilen. Es funktionierte gut, leider habe ich einen Datensatz in einer Datei, in der ein Komma zwischen den Anführungszeichen steht, wie folgt "ABC,DEF,ghi",2, "Orange". Statt 3 Spalten sind es jetzt also fünf Spalten und alle Konvertierungen schlagen fehl. Kann mir jemand helfen, das Skript in C# zu schreiben, das das Komma zwischen den Anführungszeichen durch ein Semikolon ersetzt und das Komma zwischen den Spalten nicht berührt.

Ich danke Ihnen.

3voto

yankee Punkte 35636

Es sieht so aus, als ob Ihre CSV-Datei RFC 4180-konform sein könnte. Verwenden Sie einen RFC 4180-Parser. Davon gibt es viele. Prüfen Sie diesen: http://www.codeproject.com/KB/database/CsvReader.aspx

2voto

Sean Dawson Punkte 4978

Diese Frage wird hier beantwortet: Java: Aufteilung einer kommagetrennten Zeichenkette, aber Ignorieren von Kommas in Anführungszeichen

Sie könnten denselben regulären Ausdruck verwenden ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)" und verwenden Sie die C#-Methode Regex.Split() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X