Maison >développement back-end >C++ >Comment diviser correctement les colonnes CSV avec des virgules intégrées en C# ?

Comment diviser correctement les colonnes CSV avec des virgules intégrées en C# ?

DDD
DDDoriginal
2025-01-26 16:56:10974parcourir

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

Diviser les colonnes CSV contenant des virgules incorporées en C#

Les fichiers CSV utilisent généralement des virgules pour séparer les colonnes. Cependant, certaines colonnes peuvent elles-mêmes contenir des virgules, ce qui peut créer des difficultés lors du fractionnement des données CSV en différentes chaînes.

Question :

Étant donné une ligne CSV :

<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>

Comment puis-je diviser cette ligne en un tableau de chaînes, en garantissant que le texte « Corvallis, OR » reste dans un seul champ ?

Solution :

L'expression régulière fournie ne fonctionne que sur les données CSV où toutes les virgules sont à l'extérieur ou à l'intérieur de guillemets. Pour résoudre ce problème, pensez à utiliser les classes Microsoft.VisualBasic.FileIO dans l'espace de noms TextFieldParser. Cette classe est conçue pour gérer des fichiers délimités où certains champs sont entourés de guillemets et d'autres non.

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>

Sortie :

<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>

Remarque :

Lors de l'utilisation de TextFieldParser, vous devez ajouter une référence à Microsoft.VisualBasic dans l'onglet "Ajouter une référence.NET". Le code utilise également l'instruction using pour garantir que le TextFieldParser est correctement fermé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn