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
Libérer: 2025-01-26 16:56:10
original
949 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal