Texte original :
片仔癀(<span label="粉色背景" >603567</span>.SH)、
天士力(<span label="绿色背景" >600535</span>.SH)、
片仔癀(<span label="粉色背景" >603567</span>.SH)
和昆药集团(<span label="金色背景" >600422</span>.SH)等。
remplacer par :
片仔癀(<span label="粉色背景" ><a link="http://#link?index=1">603567</a></span>.SH)、
天士力(<span label="绿色背景" ><a link="http://#link?index=2">600535</a></span>.SH)、
片仔癀(<span label="粉色背景" ><a link="http://#link?index=3">603567</a></span>.SH)
和昆药集团(<span label="金色背景" ><a link="http://#link?index=4">600422</a></span>.SH)等。
Vous pouvez désormais utiliser des expressions régulières pour remplacer le texte cible, mais le numéro de série ne peut pas être complété (ne peut pas être bouclé)
Pattern pattern = Pattern.compile("(<span.*?label=\"(*色背景)\".*?>)(.*?)(</span>)");
Matcher matcher = pattern.matcher(str);
int i=0;
while (matcher.find()) {
System.out.println(matcher.replaceAll(matcher.group(1) + "<a link=\"http://#link?index="+i+"\">" + matcher.group(3) + "</a>" + matcher.group(4)));
i++;
}
Il y a trop de problèmes dans votre code
De plus, la balise a n'est-elle pas terminée
?Référencez ceci :
https://stackoverflow.com/que...
Essayez de mettre
replaceAll
换成replaceFirst
,每次只替换第一个,然后累加i
.Changez "a" dans la balise par ', essayez-le