Bonjour tout le monde.
Je cherche à remplacer un mot exact dans une chaine de caractère, mais j'ai un peu de mal.
En fait j'ai la chaine suivante "param23 + 12 + param2" (sans les guillemets) et j'ai également une Map avec la valeur de mes param. Map<String, Double> = [param2 15],[param23 9].
Je voudrais donc remplacer mes paramxx par leur valeurs respective.
Je n'arrive pas à trouver la regex qui me remplace (dans un replaceAll - Java 1.4 oblige) param2 et seulement param2.
En gros aujourd'hui mon code me renvoie ça : 153 + 12 + 15 car il remplace param2 dans param23... ce qui n'est pas correct.
Voici le susdit code si ça peut aider.
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
26
27
28
29
30
31
32
33
34 /** * Replaces the keys of the formula with their values in the map. * * @param originalFormula * the original formula as it is extracted from the database. The * values to be replaced needs to be both prefixed and postfixed by * a space. <i>e.g.<b> key1 key2 </b>instead of<b> key1key2 * @param replacementMap * a map which takes any Strings as keys and any Strings as values. * <i>e.g. The operator ID as keys and the parameter names or the * parameter IDs as values .</I> * * @return the formula updated with the replacementMap values instead of its * keys. */ public static String updateFormula(String originalFormula, Map replacementMap) { String newFormula = originalFormula; List keys = new ArrayList(); keys.addAll(replacementMap.keySet()); for (int i = 0; i < keys.size(); i++) { if (keys.get(i) != null) { newFormula = newFormula.replaceAll(keys.get(i).toString(), replacementMap.get(keys.get(i)).toString()); } } consoleLogger.debug("updateFormula(" + originalFormula + ") -> " + newFormula); return newFormula; }
Partager