2010-05-25 17 views
52

¿Hay alguna forma sencilla de comprobar cuántas veces aparece un carácter en una cadena?Javascript: Cuántas veces ocurre un carácter en una cadena

+3

posible duplicado de [Cuente el número de ocurrencias de un carácter en una cadena en Javascript] (http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character- in-a-string-in-javascript) –

Respuesta

41

usted podría quitar cualquier otro carácter en la cadena y comprobar la longitud:

str.replace(/[^a]/g, "").length 

Aquí se cuenta el número de a s están en str.

+0

Muchas gracias – Ruth

3
var s = "dqsskjhfds"; 
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string 
+2

Qué complicado. – Kobi

22

esto cuenta a por debajo de ejemplo:

str = "A man is as good as his word"; 
alert(str.split('a').length-1); 

Si desea sensible a mayúsculas te gustaría algo así como

alert(str.split(new RegExp("a", "gi")).length-1); 

Así que agarra "A" y "a" ... bandera "g" no es realmente necesaria, pero sí necesita la bandera "i"

+0

¡Gracias, funcionó de maravilla! –

+1

La respuesta más eficiente, triste, los otros obtuvieron tantos votos. – Josh

8

Use un RegEx para contar el número de "a" si n una cadena.

var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda'; 
 

 
document.write(string.match(/a/gi).length);

Voy a explicar cómo funciona esto:

string.match Este es un método de expresiones regulares. Busca el RegEx especificado dentro de la cadena especificada (en este caso, la cadena "cadena").

(/a/gi) Este es el RegEx real. Se lee, "encontrar el personaje a". Es muy sencillo. También lleva dos banderas, la "g" y la "i". La "g" dice que se deben encontrar TODAS las ocurrencias del carácter "a". De lo contrario, solo encontraría el primero, y nunca contaría más allá del número uno. La segunda bandera es "i". Hace que el RegEx coincida con todos los casos de ese personaje. Si esa bandera (i) no estaba allí, el código anterior solo contaría 4, porque saltaría la letra mayúscula "A" en la cadena. Debido a la "i", coincidirá con la parte superior y minúsculas.

string.match devuelve una matriz de todas las coincidencias, por lo que usamos el método length para recuperar el número de entradas de la matriz. ¡Simple como eso!

Cuestiones relacionadas