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();
}
} |