La classe Pattern possède deux autres méthodes split() particulièrement utiles pour la décomposition d'une chaîne de caractères selon un séparateur de valeurs.
Contrairement à la méthode split() de la classe String, un argument de limite peut favoriser la récupération de valeurs vides.
Exemple [voir]import java.util.regex.Pattern; public final class RegExp { public static void main(String[] args) { String chaine = "#numero;service;nom;prenom;adresse;" + "telephone;portable;fax;salaire\n" + "A0025DE;DRH;Dunord;Jean;1a rue des Péchés " + "75000 Paris;0145827421;;;\n" + "B1241AB;Direction;Angel;Julie;145 avenue Dausmesnil " + "75000 Paris;0121127842;0664157862;0121127844;\n"; RegExp rPos = new RegExp(8); RegExp rZero = new RegExp(0); RegExp r = new RegExp(); RegExp rNeg = new RegExp(-8); String[] lignes = r.decomposition(chaine, "\n"); executer(rPos, lignes); executer(rZero, lignes); executer(r, lignes); executer(rNeg, lignes); } public static void executer(RegExp re, String[] lignes) { for (int i = 0; i < lignes.length; i++) { if(lignes[i].length() < 1 || Pattern.matches("#.*", lignes[i])) continue; System.out.println("Cible : " + lignes[i]); System.out.println("Limite : " + re.limite); String[] valeurs = re.decomposition(lignes[i], ";"); re.afficher(valeurs); } } public int limite; public RegExp(int limite) { this.limite = limite; } public String[] decomposition(String chaine, String separateur) { Pattern modele = Pattern.compile(separateur); String[] valeurs = modele.split(chaine, this.limite); return valeurs; } public void afficher(String[] valeurs) { System.out.println("Nombre de valeurs : " + valeurs.length); for(int i = 0; i < valeurs.length; i++) { System.out.println("\"" + valeurs[i] + "\""); } System.out.println(); } } |