Heim > Backend-Entwicklung > C++ > Wie teilt man CSV-Spalten mit eingebetteten Kommas in C# richtig auf?

Wie teilt man CSV-Spalten mit eingebetteten Kommas in C# richtig auf?

DDD
Freigeben: 2025-01-26 16:56:10
Original
949 Leute haben es durchsucht

How to Properly Split CSV Columns with Embedded Commas in C#?

Aufteilen von CSV-Spalten mit eingebetteten Kommas in C#

CSV-Dateien verwenden normalerweise Kommas, um Spalten zu trennen. Allerdings können einige Spalten selbst Kommas enthalten, was beim Aufteilen von CSV-Daten in verschiedene Zeichenfolgen zu Problemen führen kann.

Frage:

Gegebene CSV-Zeile:

<code>2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,"Corvallis, OR",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34</code>
Nach dem Login kopieren

Wie kann ich diese Zeile in ein Array von Zeichenfolgen aufteilen, um sicherzustellen, dass der Text „Corvallis, OR“ in einem Feld verbleibt?

Lösung:

Der bereitgestellte reguläre Ausdruck funktioniert nur bei CSV-Daten, bei denen alle Kommas außerhalb oder innerhalb von Anführungszeichen stehen. Um dieses Problem zu lösen, sollten Sie die Verwendung der Microsoft.VisualBasic.FileIO-Klassen im TextFieldParser-Namespace in Betracht ziehen. Diese Klasse ist für die Verarbeitung von durch Trennzeichen getrennten Dateien konzipiert, bei denen einige Felder in Anführungszeichen gesetzt sind und andere nicht.

Code:

<code class="language-csharp">using Microsoft.VisualBasic.FileIO;

// ...

string csv = "2,1016,7/31/2008 14:22,Geoff Dalgas,6/5/2011 22:21,http://stackoverflow.com,\"Corvallis, OR\",7679,351,81,b437f461b3fd27387c5d8ab47a293d35,34";

using (TextFieldParser parser = new TextFieldParser(new StringReader(csv)))
{
    parser.HasFieldsEnclosedInQuotes = true;
    parser.SetDelimiters(",");

    while (!parser.EndOfData)
    {
        string[] fields = parser.ReadFields();
        foreach (string field in fields)
        {
            Console.WriteLine(field);
        }
    }
}</code>
Nach dem Login kopieren

Ausgabe:

<code>2
1016
7/31/2008 14:22
Geoff Dalgas
6/5/2011 22:21
http://stackoverflow.com
Corvallis, OR
7679
351
81
b437f461b3fd27387c5d8ab47a293d35
34</code>
Nach dem Login kopieren

Hinweis:

Wenn Sie TextFieldParser verwenden, müssen Sie auf der Registerkarte „Referenz.NET hinzufügen“ einen Verweis auf Microsoft.VisualBasic hinzufügen. Der Code verwendet außerdem die using-Anweisung, um sicherzustellen, dass TextFieldParser korrekt geschlossen wird.

Das obige ist der detaillierte Inhalt vonWie teilt man CSV-Spalten mit eingebetteten Kommas in C# richtig auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage