string java

string java - Java - Programmation

Marsh Posté le 14-09-2009 à 11:19:07    

slt  à tous .  
voila I need  help .
je developpe e java.  
 J'ai  un fichier text.  que j'ai récupéré  dans une  String.(String text = "monFichier" )
   ce text contient l'expression ( numero = "200" ) plusieurs fois .
    Je voudrai parcourrir le texte et compter le nombre de fois que je rencontre cette expression. puis retourner ce nombre.
      j'espere avoir été  clair dans mes explications.  
          thanks for  help.

Reply

Marsh Posté le 14-09-2009 à 11:19:07   

Reply

Marsh Posté le 14-09-2009 à 14:26:12    

C'est quoi le problème dans ton code ?

Reply

Marsh Posté le 14-09-2009 à 15:11:21    

voila  j'ai fais une classe par exemple qui vérifie si mon text une chaine de caractère ,  ici la chaine  "un".  
ce que je veux maintenant  c'est de determiner le nombre de "un"  contenu  dans mon text.
 
Merci pour la reponse .
 
 
public class maClassTest {
 
 public void contenuText(){
 
  String monText = " ici un text et un autre";
  String mot = "un";
  int index = monText.indexOf(mot);
  if (index !=-1)  
   System.out.println("monText contient     " + mot);
  else
   System.out.println("monText ne contient pas    " + mot);
 
 }
 public static void main (String [] args){
  new maClassTest().contenuText();
 
 }
 
}

Reply

Marsh Posté le 14-09-2009 à 15:12:25    

voila  j'ai fais une classe par exemple qui vérifie si mon text contient  une chaine de caractère ,  ici la chaine  "un".  
ce que je veux maintenant  c'est de determiner le nombre de "un"  contenu  dans mon text.  
 
Merci pour la reponse .  
 
 
public class maClassTest {  
 
 public void contenuText(){  
 
  String monText = " ici un text et un autre";  
  String mot = "un";  
  int index = monText.indexOf(mot);  
  if (index !=-1)  
   System.out.println("monText contient     " + mot);  
  else  
   System.out.println("monText ne contient pas    " + mot);  
 
 }  
 public static void main (String [] args){  
  new maClassTest().contenuText();  
 
 }  
 
}

Reply

Marsh Posté le 14-09-2009 à 15:39:45    

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 :
  1. String expression = "numero = \"200\"";
  2. int compteur = 0;
  3. for (int i = 0; (i = monText.indexOf(expression, i)) != -1; i += expression.length()) {
  4.   compteur++;
  5. }


 
Si le texte peut varier légèrement, je te conseille d'utiliser une expression régulière compilée (Pattern).
 

Code :
  1. Matcher m = Pattern.compile("numero\\s*=\\s*\"200\"" ).matcher(monText);
  2. int compteur = 0;
  3. while (m.find()) {
  4.   compteur++;
  5. }


 
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 :
  1. Pattern p = Pattern.compile("numero\\s*=\\s*\"200\"" );
  2. Scanner s = new Scanner(new FileInputStream("tonfichier.txt" ));
  3. int compteur = 0;
  4. while (s.findWithinHorizon(p, 0)) {
  5.   compteur++;
  6. }


Message édité par cbeyls le 14-09-2009 à 15:41:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed