Recherche toutes occurences caractères dans string

Résolu
forcels Messages postés 64 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 27 août 2010 - 21 sept. 2007 à 12:11
forcels Messages postés 64 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 27 août 2010 - 21 sept. 2007 à 13:03
Hello,

j'aimerais retrouver toutes les occurences du caractère ":" se trouvant dans un string. J'ai pensé à la méthode indexOf, mais elle ne retourne que la première occurence trouvée.
J'ai tenté avec une boucle while, mais il ne passe jamais dedans.
Voici mon code:

function recupereCaract() {
     var position = 0;
     var separator = ":";
     
     while(link.indexOf(separator) != -1)
     {
        var posSeparator = link.indexOf(separator);
        list_separators[position] = posSeparator;
        position++;
     }
}

Je pense que c'est ma condition dans le while qui n'est pas correcte, mais je ne vois pas comment je dois faire ce test.
Est-ce que quelqu'un aurait une idée ?

Merci d'avance !

forcels

5 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2007 à 12:56
je réexplique :
 indexOf fait une "recherche" dans un string,
 il commence sa recherche à partir du caractère dont l'adresse
    est donné dan son 2ème paramètre
si tu ne donnes pas ce 2ème paramètre, indexOf commence à 0
    string.indexOf("à rechercher",adresse début)

<§ article:1: mon lien §>.
    et un split ?

    var r="<§ article:1: mon lien §>" .split(":");
    ==>
    r[0]="<§ article"
    r[1]="1"
    r[2]="mon lien §>"
   

<hr />
Cordialement                Bul             [mon Site]     [M'écrire]<hr />En général, c'est absurde de généraliser.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2007 à 12:34
bonjour,

    indexOf accepte un 2ème paramètre qui permet de préciser
       à partir de quel caractère commencer la recherche.
    par défaut... il vaut 0 ( zéro )

    ça dépend de ce que tu veux faire, mais une petite expression
        régulière pourrait (??)  être "plus simple" ?
       string.replace(/:/,"toto")   replace ou search ou test ou ...

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2007 à 12:36
il falait lire :
string.replace(/:/g,"toto")

<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />




En général, c'est totalement absurde de généraliser.
0
forcels Messages postés 64 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 27 août 2010
21 sept. 2007 à 12:43
Hello,

Je vais essayer d'être plus précise...

J'ai un string comme celui-ci: <§ article:1: mon lien §>.
Mon but c'est de pouvoir récupérer séparément article, 1 et mon lien.

J'avais pensé à la méthode indexOf, car elle retourne la position, pour ensuite récupérer mon texte grâce à substring().

Je pourrais faire en indiquant chaque fois la position précédente, mais le jour où j'ai plus de paramètres, cela ne va plus fonctionner, d'où mon utilisation du while...

Comment je peux faire le test dans le while, afin qu'il passe tant qu'une position est trouvée ?

Merci pour ton aide

forcels
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
forcels Messages postés 64 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 27 août 2010
21 sept. 2007 à 13:03
Hello

En effet, la méthode split() effectue ce que je voulais.

Merci beaucoup pour ton aide bultez !

forcels
0
Rejoignez-nous