Si le texte est une expression fixe, tu peux utiliser la méthode String.indexOf() de façon répétée en incrémentant l'index de départ à chaque fois.
Code :
String expression = "numero = \"200\""; int compteur = 0; for (int i = 0; (i = monText.indexOf(expression, i)) != -1; i += expression.length()) { compteur++; }
|
Si le texte peut varier légèrement, je te conseille d'utiliser une expression régulière compilée (Pattern).
Code :
Matcher m = Pattern.compile("numero\\s*=\\s*\"200\"" ).matcher(monText); int compteur = 0; while (m.find()) { compteur++; }
|
Avec la classe java.util.Scanner, tu n'es même pas obligé de charger le texte en entier dans une String, tu peux lui passer un File ou un InputStream afin d'accélérer le traitement et économiser de la mémoire (au cas où tu dois quand même charger le fichier entièrement dans une String pour une autre opération, pas la peine d'utiliser cette méthode):
Code :
Pattern p = Pattern.compile("numero\\s*=\\s*\"200\"" ); int compteur = 0; while (s.findWithinHorizon(p, 0)) { compteur++; }
|
Message édité par cbeyls le 14-09-2009 à 15:41:55