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 : Sélectionner tout - Visualiser dans une fenêtre à part
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