132 votes

Comment diviser un csv dont les colonnes peuvent contenir ,

Étant donné

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

Comment utiliser C# pour diviser les informations ci-dessus en chaînes comme suit :

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

Comme vous pouvez le voir, l'une des colonnes contient , <= (Corvallis, OR)

mettre à jour

Basé sur C# Regex Split - virgules en dehors des guillemets

 string[] result = Regex.Split(samplestring, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

68voto

Husen Points 630

Il est tellement tard, mais cela peut être utile pour quelqu'un. Nous pouvons utiliser RegEx comme ci-dessous.

 Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
String[] Fields = CSVParser.Split(Test);

4voto

99tm Points 19742

Vous pouvez séparer toutes les virgules suivies d'un nombre pair de guillemets.

Vous aimeriez également voir au specf pour CSV sur la gestion des virgules.

Lien utile : C# Regex Split - commas outside quotes

3voto

Anna Lear Points 13919

Utilisez une bibliothèque comme LumenWorks pour faire votre lecture CSV. Il gérera les champs contenant des guillemets et sera probablement globalement plus robuste que votre solution personnalisée du fait qu'il existe depuis longtemps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X