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 :
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")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"); }
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 :
Elle produit bien le même résultat mais est légèrement plus lente...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } }
Partager