Quelqu'un peut-il m'aider pour obtenir le nombre de caractères répétés dans une chaîne donnée en javascript.
Par exemple,
"abccdef" -> 1 (Only "c" repeated) "Indivisibilities" -> 2 ("i" and "s" repeated)
Je vous remercie
C'est un problème intéressant. Ce que nous pouvons faire, c'est transformer la chaîne en minuscules en utilisant String.toLowerCase
, puis diviser en ""
, donc nous obtenons un ensemble de caractères.
Nous allons ensuite le trier avec Array.sort
. Une fois qu'il a été trié, nous allons l'associer à l'aide de Array.join
. Nous pouvons alors utiliser le regex /(.)\1+/g
qui signifie essentiellement correspondre une lettre et des lettres subséquentes s'il est identique.
Lorsque nous utilisons String.match
avec le regex déclaré, nous obtiendrons un tableau, dont la longueur est la réponse. Aussi utilisé un try...catch
pour renvoyer 0
dans le cas où le match retourne null
et entraîne TypeError
.
function howManyRepeated(str){ try{ return str.toLowerCase().split("").sort().join("").match(/(.)\1+/g).length; } catch(e){ return 0; } // if TypeError } console.log(howManyRepeated("Indivisibilities")); // 2
Vous pouvez utiliser comme ça
function getFrequency(string) { var freq = {}; for (var i=0; i<string.length;i++) { var character = string.charAt(i); if (freq[character]) { freq[character]++; } else { freq[character] = 1; } } return freq; }; getFrequency('Indivisibilities');