Bonjour,

Je dois créer un outil permettant de manipuler des fichiers CSV provenant de différents systèmes, donc avec des séparateurs différents.

Le but de l'outil est de modifier les fichiers CSV afin de remplacer certains codes dans certaines colonnes par d'autres.

La question que je me pose, c'est comment découper "proprement" et de manière "générique" les colonnes du fichier.

En effet, mettons le fichier suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
1;TOTO;2.4
2;TITI;5.3
Ok : aucun problème, un simple Split(';') sur chaque ligne me permet de retrouver mes trois colonnes.

Mais je peux aussi avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
1;"TOTO;TATA";2.4
2;TITI;5.3
Si je fais un simple Split, la valeur TOTO;TATA va être éclatée en deux : "TOTO et TATA".
Donc je peux essayer, avec une expression régulière par exemple de remplacer tous les ";" contenus entre "" par un autre caractère, mettons "¤", faire un split, puis remettre le ;.

Mais je peux aussi avoir ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
1;"TOTO
TATA";2.4
2;TITI;5.3
Là, c'est au moment du découpage des lignes que ça va merder : de la même manière, il faut que je sâche conserver les sauts de lignes à l'intérieur des ""...

Sans oublier ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
1;"TOTO ""TATA""";2.4
2;TITI;5.3
Ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
1;"TOTO \"TATA\"";2.4
2;TITI;5.3
Là on a un peu de tout, avec des " à l'intérieur des "... Deux solution, soit les " sont échappés en les doublants, soit en les échappant avec le caractère "\"...

Avez-vous en tête une solution "miracle" pour m'en sortir ? Un Split un peu plus intelligent qu'un simple éclatement avec un caractère tout bête ?