Salutà tous,
J'ai un fichier CSV structurer ainsi : "Titre","Prénom","Nom"... Et le problème est que chaque champ est compris entre guillements ?
Voilà ce que j'ai écrit pour récupérer chaque champ :
-_-_-_-_-_-_-_
/*
* Créé le 29 juin 2006
*
* TODO Pour changer le modèle de ce fichier généré, allez à :
* Fenêtre - Préférences - Java - Style de code - Modèles de code
*/
package tests;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author mpayet
*
* TODO Pour changer le modèle de ce commentaire de type généré, allez à :
* Fenêtre - Préférences - Java - Style de code - Modèles de code
*/
public class Test1 {
public static void main(String[] args) {
try {
BufferedReader lecteurAvecBuffer = null;
String ligne;
try {
lecteurAvecBuffer = new BufferedReader(new FileReader(new File(
"C:" + File.separator + "contacts.CSV")));
System.out.println("Fichier ouvert");
} catch (FileNotFoundException exc) {
System.out.println("Erreur d'ouverture");
}
while ((ligne = lecteurAvecBuffer.readLine()) != null) {
System.out.println(ligne);
Matcher matcher = Pattern.compile("\"[' -_a-zA-Z]*\"").matcher(
ligne);
/*
* C'est SUPER important d'utiliser FIND c'est un peu comme un
* iterator
*/
String civilite;
String prenom;
String nom;
/* Récupérer la civilité */
if (matcher.find()) {
civilite = matcher.group(0);
System.out.print(" civilité " + civilite);
civilite = Pattern.compile("[^a-zA-Z]").matcher(civilite)
.replaceAll("");
System.out.print(" civilité " + civilite);
}
/* Récupérer le prenom */
if (matcher.find()) {
prenom = matcher.group(0);
System.out.print(" prenom " + prenom);
prenom = Pattern.compile("[^-'_a-zA-Z]").matcher(prenom)
.replaceAll("");
System.out.print(" prenom " + prenom);
}
/* Récupérer le nom */
if (matcher.find()) {
nom = matcher.group(0);
System.out.print(" nom " + nom);
nom = Pattern.compile("[^-'_a-zA-Z]").matcher(nom)
.replaceAll("");
System.out.print(" nom " + nom);
}
System.out.println();
}
lecteurAvecBuffer.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-_-_-_-_-_-_-_-_-_-_
Ci dessous la sortie standart :
Fichier ouvert
"Titre","Prénom","Nom"
civilité "Titre"," civilité Titre prenom ","Nom" prenom Nom
-_-_-_-_-_-_-_
Comment fait-on pour matcher une chaîne de caractères qui est comprise entre deux guillements ? Quoiqu'il y ait entre les deux guillemets...
Y a t-il en JAVA une méthode qui split en fontion d'un pattern ? Soit, existe t-il l'équivalant de ce code PERL : split /REGEX/, string;
Merci d'avance pour toutes ces réponses...
__
LNP...
pour vous...