[regex]Remplacer un mot exact
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:
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;
} |