Gestion des colonnes CSV contenant des virgules incorporées en C#
Lors du fractionnement d'un fichier CSV, vous pouvez rencontrer des colonnes contenant des virgules, telles que des adresses ou des descriptions intégrées. Bien que les méthodes traditionnelles de fractionnement des délimiteurs puissent échouer dans ce cas, il existe des solutions robustes disponibles en C#.
Une façon consiste à utiliser la classe Microsoft.VisualBasic.FileIO.TextFieldParser
. Cette classe gère l'analyse des fichiers texte délimités, permettant une gestion spécifique des champs entre guillemets.
Considérez l'exemple CSV suivant avec des virgules intégrées dans la colonne d'adresse :
<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>
Pour analyser ce CSV à l'aide de TextFieldParser
vous pouvez suivre l'exemple de code suivant :
<code class="language-csharp">using Microsoft.VisualBasic.FileIO; TextFieldParser parser = new TextFieldParser(new StringReader(csv)); parser.HasFieldsEnclosedInQuotes = true; parser.SetDelimiters(","); string[] fields; while (!parser.EndOfData) { fields = parser.ReadFields(); foreach (string field in fields) { Console.WriteLine(field); } } parser.Close();</code>
En définissant HasFieldsEnclosedInQuotes
sur true
, TextFieldParser
gérera les champs entre guillemets différemment, empêchant les virgules qu'ils contiennent d'être traitées comme des délimiteurs.
Le résultat final divisera correctement le CSV en champs individuels, en préservant les virgules intégrées dans l'adresse « Corvallis, OR » :
<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>
En tirant parti de la classe TextFieldParser
, vous pouvez gérer efficacement les colonnes CSV contenant des virgules intégrées, garantissant ainsi une interprétation et une manipulation précises des données.
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!