1 pièce(s) jointe(s)
Supprimer les sauts de ligne dans les champs texte d'un csv
Bonjour à tous, c'est la première fois que je poste sur un forum, merci d'être indulgent :).
Je cherche à importer des données CSV dans l'ERP de mon entreprise et j'ai besoin de les mettre en forme. En effet, des sauts de ligne présents dans les champs texte sont interprétés comme des sauts de ligne du tableau.
J'ai déjà pas mal cherché de solution et j'ai écris un programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class test
{
public static void main(String[] args)
throws IOException
{
String dataOld = new String(Files.readAllBytes(Paths.get("c:\\test.csv")));
//System.out.println(dataOld);
int nbCara=dataOld.length();
//System.out.println(nbCara);
int i=0,j=0,k=0;
while (i < nbCara-2) //Tant que le pointeur n'est pas à la fin du String (-1)
{
j=dataOld.indexOf((char)34,i); //Recherche le début du champ texte " à partir du caractère n° i
//System.out.print("j :");
//System.out.println(j);
k=dataOld.indexOf((char)34,j+1); //Recherche la fin du champ texte " à partir du début de ce champ
//System.out.print("k :");
//System.out.println(k);
String champ = dataOld.substring(j,k+1); //Extrait les caractères du champ texte
//System.out.println(champ);
if (champ.contains("[\r\n]+")) //Si le champ contient un saut de ligne
{
champ = champ.replaceAll("[\r\n]+"," "); // Remplacer le saut de ligne par un espace
}
FileWriter fw = new FileWriter("c:\\test1.csv",true); //écris dans un autre fichier
fw.write(champ+';'); //Le champ + le séparateur
fw.close();
i=k+1; //On incrémente le pointeur de la position de fin du champ +1
//System.out.println(i);
}
}
} |
Le problème est que je retrouve mes , séparatrices en sortie et je ne vois pas comment faire autrement pour ne pas les avoir.
Merci beaucoup pour votre aide.