Remplacement de sous-chaines
Bonjour,
voilà mon problème :
J'effectue de la substitution de sous-chaines de façon dynamique. L'idée de base est la suivante :
Code:
1 2 3 4 5
| String content = ....;
for(int id = 0 ; id < 10 ; id++) {
content = content.replaceAll("Une expression faisant intervenir id", "une autre expression faisant intervenir id");
} |
Ce qui d'après moi n'est pas super efficace puisque j'ai une nouvelle instance de String créée à chaque tour de boucle (sachant que les ID sont en fait récupérés en base et que donc il ne s'agit pas d'une boucle "simple")
J'ai tenté ma chance avec du StringBuffer et les matchers mais le problème est qu'il faut resetter le matcher à chaque fois vu que je modifie le StringBuffer, ce qui est encore plus long que l'utilisation d'une chaine (cela dit je n'ai pas de données au niveau de l'impact mémoire
Pour info la version StringBuffer a l'aspect suivant :
Code:
1 2 3 4 5 6 7 8 9
| for(int id = 0 ; id < 10 ; id++) {
String imageName = id + ".gif";
Pattern p = Pattern.compile("regex faisant intervenir ID");
Matcher m = p.matcher(sb);
while(m.find()) {
sb.replace(m.start(), m.end(), "<img src=\"" + imageName + '"');
m.reset();
}
} |
Elle produit bien le même résultat mais est légèrement plus lente...