Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2011, 23h36   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut comptage du nombre d'occurrence d'un caractère dans une chaîne

Bonsoir,

j'essaie de faire une fonction qui fait ce qui est dans le titre.
J'ai fait ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
function nbChar(chaine,lettre) {
var nb = 0;
foreach (ch in chaine)
{
if (ch == lettre) nb++;
}
return nb;
}
chaine='ceci est une chaine';
document.write('chaine:'+chaine);
document.write('nb de c ds '+chaine+':'+nbChar(chaine,"c"));
</script>
mais ça ne marche pas ; qu'est-ce qui cloche ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 04h48   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Code js :
1
2
3
function nbChar(chaine,lettre) {
  return chaine.match(new RegExp(lettre,"gi")).length;
}





nb: remplace "gi" par "g" pour avoir une recherche sensible à la case (majuscule != minuscule)


edit:
autrement ton code ne fonctionnait pas pour la simple raison que "foreach" n'existe pas. il existe "for each" sous firefox... mais comme tu ne codes certainement pas exclusivement sous firefox, ce qui s'en rapproche le plus aurait été "for(i in chaine) ch=chaine[i]" et encore, ça n'aurait pas fonctionné sous internet explorer car les string ne sont pas considérés comme des tableaux(donc pas de parcours), si je ne m'abuse.

ce qui donnerait ceci :
Code :
1
2
3
4
5
6
7
function nbChar(chaine,lettre) {
  var nb = 0;
  chaine = chaine.split(""); // cette ligne n'est pas nécessaire pour firefox ni chrome
  for(var i in chaine)
    nb += chaine[i] == lettre;
  return nb;
}
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 08h30   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
1
2
3
4
5
function nbChar(chaine,lettre) {
  var nb = 0;
  chaine = chaine.split("");
  return chaine.length-1;
}
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/03/2011, 13h31   #4
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Merci,

mais avec ça :
Code :
1
2
3
4
5
function nbChar(chaine,lettre) {
  var nb = 0;
  chaine = chaine.split(lettre);
  return chaine.length-1;
}
c'est encore mieux...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h36   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
oui desolé c'est en fait ce que je voulais ecrire
d'ou le length -1
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2011, 13h38   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
Citation:
Envoyé par laurentSc Voir le message
Merci,

mais avec ça :
Code :
1
2
3
4
5
function nbChar(chaine,lettre) {
  var nb = 0;
  chaine = chaine.split(lettre);
  return chaine.length-1;
}
c'est encore mieux...
J'avais aussi pensé au split mais la fonction match me semblait plus appropriée.

Code :
1
2
3
function nbChar(chaine,lettre) {
  return chaine.split(lettre).length-1;
}
Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h12.


 
 
 
 
Partenaires

Hébergement Web