Bonjour,
Existe-t-il une fonction permettant d'avoir le nombre de fois qu'un caractère bien identifié est présent dans une phrase?
Par exemple, dans la phrase : La vie est un fleuve tranquille
Il y a 4 fois la lettre L
Merci
Bonjour,
Existe-t-il une fonction permettant d'avoir le nombre de fois qu'un caractère bien identifié est présent dans une phrase?
Par exemple, dans la phrase : La vie est un fleuve tranquille
Il y a 4 fois la lettre L
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function getNumChars(str, char) { return str.match(new RegExp(char,'ig')).length; }
oui ou un poil moins gourmands:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function getNumChars(str, char) { return str.split(char).length -1 ; }
Ma page Developpez - Mon Blog 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![]()
Venez sur le Chat de Développez !
split accepte une expression régulière en argument, donc :
affiche bien 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function getNumChars(str, char) { return str.split(char).length -1 ; } alert(getNumChars('Toto', /t/i))![]()
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
c'était pas spécifié mais ça se règle rapidement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part return str.toLowerCase().split(char.toLowerCase()).length -1 ;}
Ma page Developpez - Mon Blog 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![]()
Venez sur le Chat de Développez !
exactement
pendant ce temps, j'ai profité pour faire des tests avec ce code :
résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 function getNumCharsMatchRegExp(str, chr) { return str.match(new RegExp(chr,'ig')).length; } function getNumCharsMatchLowerCase(str, chr) { return str.toLowerCase().match(new RegExp(chr.toLowerCase(),'g')).length; } function getNumCharsSplitRegExp(str, chr) { return str.split(new RegExp(chr,'ig')).length - 1; } function getNumCharsSplitLowerCase(str, chr) { return str.toLowerCase().split(chr.toLowerCase()).length - 1; } window.onload = function() { console.time('createarray'); var str = new Array(1000000).join('i'); console.timeEnd('createarray'); console.time('getNumCharsMatchRegExp'); console.log(getNumCharsMatchRegExp(str, 'i')); console.timeEnd('getNumCharsMatchRegExp'); console.time('getNumCharsMatchLowerCase'); console.log(getNumCharsMatchLowerCase(str, 'i')); console.timeEnd('getNumCharsMatchLowerCase'); console.time('getNumCharsSplitRegExp'); console.log(getNumCharsSplitRegExp(str, 'i')); console.timeEnd('getNumCharsSplitRegExp'); console.time('getNumCharsSplitLowerCase'); console.log(getNumCharsSplitLowerCase(str, 'i')); console.timeEnd('getNumCharsSplitLowerCase'); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 createarray: 145ms 999999 getNumCharsMatchRegExp: 320ms 999999 getNumCharsMatchLowerCase: 354ms 999999 getNumCharsSplitRegExp: 137ms 999999 getNumCharsSplitLowerCase: 60ms
ce n'est pas si étonnant vu que tu crées à chaque fois une new RegExp
Ma page Developpez - Mon Blog 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![]()
Venez sur le Chat de Développez !
la regexp est créée une seule fois mon coco, regarde bien le code, il prend en paramètres le résultat de new RegExp, mais il est bien connu que les regExp c'est plus lent en traitement que la chose la plus simple comme un split sur caractère simple par exemple.
Tu vois bien que la fonction est appelée UNE SEULE FOIS et elle se prend donc une regexp directement en paramètre et joue avec derrière
Arf en effet je ne sais pas pourquoi je suis aller imaginer que la creation de la reg etait dans une boucle
il faudrait tester la solution de de Beef qui a mon avis doit etre intermédiaire niveau perfs
Ma page Developpez - Mon Blog 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![]()
Venez sur le Chat de Développez !
Partager