Compter le nombre de fois d'une chaine de caractère dans une chaine [Résolu]

ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 22 mars 2007 à 19:58 - Dernière réponse : ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention
- 23 mars 2007 à 12:34
bonsoir mes amis

String  chaine2 =""12131415";
ArrayList s = new ArrayList();
     s.add("12");
     s.add("13");
     s.add("14");
     s.add("15");
 
    int index = 0;
    int ok=0;
   
 
while (!"".equals(chaine2)){
            for (int j = s.size() - 1; j >= 0 ; --j) {
 
 
                   index = chaine2.lastIndexOf(s.get(j).toString());
                   if (index != -1) {
                     ok++;
                     chaine2 = chaine2.subSequence(0, index).toString();
                   }
                  
                   
                  
 
                 }
                
                  chaine2 = chaine2.subSequence(0, chaine2.length()).toString();
 
              }
              System.out.println(ok);
 
<!-- END TEMPLATE: bbcode_code -->b
affchage ok =4
si j'ai String chaine2 "12135715"; oki3
le problème si j'ai String chaine2 "1213141215"; oki4 c'est faux au lieu de m'afficer 5 il m'affiche 4 meme pour ça String chaine2 "1213141215151313"; au lieu de m'affiche oki 8 il m'affiche 4

String chaine2 = "1233151420141214";au lieu de m'afficher 5 il m'affiche 2<!-- / message -->
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 mars 2007 à 22:08
3
Merci
Salut petite rectification:

String s1 = "1234556347696";



String s2 = "12";



int count = 0; // nombre d'occurrence




while (true) {



    int index = s1.indexOf (s2);



    if (index == -1) {



       break;




    }



    else {



       ++count;



       s1 = s1.substring (index + s2.length);




    }




}



__________________________________________________________
A.B. :

"Qui veut faire quelque chose trouve un moyen. - Qui ne veut rien faire trouv

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Meilleure réponse
gmi19oj19 546 Messages postés lundi 10 mai 2004Date d'inscription 28 septembre 2011 Dernière intervention - 22 mars 2007 à 22:24
3
Merci
Salut,

A vue de nez, le problème intervient si l'une des chaines que tu recherches pparait plusieurs fois.

Le problème, selon moi, c'est que vu la manière dont tu fais les tests, dans la chaine :

"1213141215";

tu vas avancer après avoir recuperer le dernier 15 , puis le denier 14 , en enlevant le 12 qui suit.

En passant,

chaine2 = chaine2.subSequence(0, chaine2.length()).toString();

ne sert pas à grand chose ^^

Donc moi j'ferai :

for (int j = s.size() - 1; j >= 0 ; --j) {
    String motif = s.get(j).toString();
    int index = 0;
    int index2 = index + motif.length();
    while(index2 < chaine2.length()) {
       index = chaine2.indexOf(motif,index);
       if(index != -1) {
          ok++;
          index2 = index + motif.length();
       }
       else break;    
    }
}

ou un truc dans le genre^^

gmi19oj19

Merci gmi19oj19 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de gmi19oj19
Ombitious_Developper 2333 Messages postés samedi 28 février 2004Date d'inscription 26 juillet 2013 Dernière intervention - 22 mars 2007 à 22:07
0
Merci
Salut:

Autre solution:



String s1 = "1234556347696";



String s2 = "12";



int count = 0; // nombre d'occurrence




while (true) {



    int index = s1.indexOf (s2);



    if (index == -1) {



       break;




    }



    else {



       ++count;



       s1 = s1.substring (index, index + s2.length);




    }




}



______________________________________________________________________________
A.B. : 

"Dieu nous donne des mains, mais il ne bâtit pas les ponts."
Commenter la réponse de Ombitious_Developper
ulysse00 292 Messages postés lundi 6 novembre 2006Date d'inscription 12 mai 2013 Dernière intervention - 23 mars 2007 à 12:34
0
Merci
merci mes amis de votre aide
Commenter la réponse de ulysse00

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.