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 :
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 "\\+"
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; }
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
Partager