Umgang mit Feldern, die doppelte Anführungszeichen ohne Escapezeichen enthalten, mit TextFieldParserC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Umgang mit Feldern, die doppelte Anführungszeichen ohne Escapezeichen enthalten, mit TextFieldParser

Post by Anonymous »

Ich versuche, eine CSV-Datei mit TextFieldParser zu importieren. Eine bestimmte CSV-Datei bereitet mir aufgrund ihrer nicht standardmäßigen Formatierung Probleme. Die Felder der betreffenden CSV-Datei sind in doppelte Anführungszeichen gesetzt. Das Problem tritt auf, wenn in einem bestimmten Feld ein zusätzlicher Satz doppelter Anführungszeichen ohne Escapezeichen vorhanden ist.

Hier ist ein stark vereinfachter Testfall, der das Problem verdeutlicht. Die tatsächlichen CSV-Dateien, mit denen ich es zu tun habe, sind nicht alle gleich formatiert und verfügen über Dutzende Felder, von denen jedes diese möglicherweise kniffligen Formatierungsprobleme enthalten kann.

Code: Select all

TextReader reader = new StringReader("\"Row\",\"Test String\"\n" +
"\"1\",\"This is a test string.  It is parsed correctly.\"\n" +
"\"2\",\"This is a test string with a comma,  which is parsed correctly\"\n" +
"\"3\",\"This is a test string with double \"\"double quotes\"\". It is parsed correctly\"\n" +
"\"4\",\"This is a test string with 'single quotes'. It is parsed correctly\"\n" +
"5,This is a test string with fields that aren't enclosed in double quotes.  It is parsed correctly.\n" +
"\"6\",\"This is a test string with single \"double quotes\".  It can't be parsed.\"");

using (TextFieldParser parser = new TextFieldParser(reader))
{
parser.Delimiters = new[] { "," };
while (!parser.EndOfData)
{
string[] fields= parser.ReadFields();
Console.WriteLine("This line was parsed as:\n{0},{1}",
fields[0], fields[1]);
}
}
Gibt es überhaupt eine Möglichkeit, eine CSV-Datei mit dieser Art von Formatierung mithilfe von TextFieldParser ordnungsgemäß zu analysieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post