Bonjour à tous,
Je travaille sur un traitement Batch qui traite un fichier avec pour séparateur la virgule. Si une des zones contient déjà une virgule, elle se retrouve entre double quote.
exemple:
et j'aimerai remplacer le séparateur virgule par un autre dès qu'il est entre double quote pour obtenir quelque chose du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 data1,data2,data3,data4 data1,"data2a,data2b,data2c",data3,"data4a,data4b" data1,"data2a,data2b","data3a,data3b",data4 data1,data2,data3,data4
j'ai cherché à utiliser les regex mais je galère un peu... mes données contiennent tous types de caractères ( "/.&-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 data1,data2,data3,data4 data1,data2a;data2b;data2c,data3,data4a;data4b data1,data2a;data2b,data3a;data3b,data4 data1,data2,data3,data4
j'ai essayé ça, mais ça ne fonctionne que lorsqu'il y a une seule virgule.
il doit bien y avoir une solution pour supprimer toutes ces virgules entre double-quote, si vous avez une idée je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Pattern p = Pattern.compile("\"[\w .&-]*,[\w .&-]*\""); Matcher m = p.matcher(data); m.replaceAll("$1$2");
Sinon, remplacer toutes les virgules qui ne sont pas entre double-quote afin d'utiliser un autre séparateur me va aussi...mais ce n'est peut être pas plus simple
Merci d'avance pour votre aide
Partager