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 :
Ok : aucun problème, un simple Split(';') sur chaque ligne me permet de retrouver mes trois colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1;TOTO;2.4 2;TITI;5.3
Mais je peux aussi avoir :
Si je fais un simple Split, la valeur TOTO;TATA va être éclatée en deux : "TOTO et TATA".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1;"TOTO;TATA";2.4 2;TITI;5.3
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 :
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 ""...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1;"TOTO TATA";2.4 2;TITI;5.3
Sans oublier ça :
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 "\"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1;"TOTO \"TATA\"";2.4 2;TITI;5.3
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 ?
Partager