Convertir un String en expression régulière
Bonjour,
J'ai un petit problème avec la methode replaceAll(A,B) de la classe String.
En effet si j'ai un caractère spécial par exemple un signe + dans A, j'ai une exception qui se lève (Pattern Exception).
Pour être plus clair voici un exemple :
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
|
/** Translate a substring (inmask) to another substring (outmask)
Syntax : Translate(phrase, intmask, outmask)
Fonction : Remplacer chaque caractère de inmask par le caractère correspondant de outmask
*/
public static String Translate(String phrase, String inmask, String outmask)
{
if (isEmpty(inmask) || isEmpty(outmask) || isEmpty(phrase)) return phrase;
char[] in = inmask.toCharArray();
char[] out = outmask.toCharArray();
if (in.length != out.length) return phrase; // on ne fait rien si pas égal
for (int i=0; i< in.length ; i++) phrase = phrase.replaceAll(""+in[i] ,""+out[i]);
return phrase;
}
public static boolean isEmpty(String s)
{
if (s == null) return true;
if (s.equals("null")) return true;
if ( s.trim().length()==0) return true;
return false;
} |
Cela marche très bien, sauf si par hasard il y a un caractère spécial dans inmask (par exemple un signe +). Dans ce cas il faudrait utiliser à la place "\\+"
Bien sûr je pourrais faire une double boucle pour rechercher les occurrences de chaque caractère, mais j'avais trouvé plus simple et plus rapide d'utiliser replaceAll.
Y-a-t-il un moyen (une classe ou une méthode) de transformer un String en une expression régulière ?
Merci d'avance