J'essaye en Java d'entourer un mot en HTML avec du balisage. Ce code lève une ArrayIndexOutOfBoundsException lorsque le replaceAll est appelé.Java RegEx replaceAll jette ArrayIndexOutOfBoundsException
Pattern pattern = Pattern.compile(wordToHighlight + "\\w{0,5}");
String replacement = "<span class='highlight'>$1</span>";
Matcher matcher = pattern.matcher(html);
if (matcher != null)
if (matcher.find())
retVal = matcher.replaceAll(replacement);
Que signifie 'html' contiennent à ce moment-là? –
Qui s'en soucie? C'est une tentative simpliste pour mettre en évidence le texte de recherche dans une chaîne HTML arbitraire. Il y a d'innombrables façons dont cela peut mal tourner, mais cela fonctionnera dans la plupart des cas. Les utilisateurs peuvent s'amuser avec des effets intéressants s'ils incluent des chevrons dans leurs expressions de recherche. –
Utilisez $ 0 plutôt que $ 1. – salathe