¿Existe una forma sencilla de comprobar cuántas veces aparece un personaje en una cadena?
javascript
string
Piedad
fuente
fuente

Respuestas:
Puede eliminar cualquier otro carácter de la cadena y comprobar la longitud:
str.replace(/[^a]/g, "").lengthAquí se cuenta cuántos
as haystr.fuente
let xLength = str.replace(/[^a || A]/g, "").length;let xLength = str.replace(/[^aA]/g, "").length;Esto cuenta
aen el siguiente ejemplo:str = "A man is as good as his word"; alert(str.split('a').length-1);Si quieres que no distingan entre mayúsculas y minúsculas, querrás algo como
alert(str.split( new RegExp( "a", "gi" ) ).length-1);Para que tome "A" y "a" ... "g" no es realmente necesario, pero sí necesita el indicador "i"
fuente
Utilice una expresión regular para contar el número de "a" en una cadena.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda'; document.write(string.match(/a/gi).length);Déjame explicarte cómo funciona esto:
string.matchEste es un método RegEx. Busca la expresión regular especificada dentro de la cadena especificada (en este caso, la cadena "cadena").(/a/gi)Esta es la expresión regular real. Dice, "encuentra el carácter a". Es muy simple. También lleva dos banderas, la "g" y la "i". La "g" dice que busque TODAS las ocurrencias del carácter "a". De lo contrario, solo encontraría el primero y nunca pasaría del número uno. La segunda bandera es "i". Hace que la expresión regular coincida con todos los casos de ese carácter. Si ese indicador (i) no estuviera allí, el código anterior solo contaría 4, porque omitiría la "A" mayúscula en la cadena. Debido a la "i", coincidirá con mayúsculas y minúsculas. Quite la "i" si desea que coincida con la letra mayúscula.string.matchdevuelve una matriz de todas las coincidencias, por lo que usamos ellengthmétodo para recuperar el número de entradas de la matriz. ¡Simple como eso!fuente
a" enstring, entoncesstring.match(/a/gi)es igualnully tiene un errorCannot read property 'length' of null.En mi opinión es más conveniente y seguro evitar las expresiones regulares en este caso
Es porque si queremos poder contar cualquier tipo de caracteres, debemos considerar dos expresiones. Uno para caracteres comunes y el segundo para caracteres especiales , por ejemplo
[, como],^y así sucesivamente. Es fácil olvidarlo, pero incluso si lo recordamos, creo que estamos expandiendo innecesariamente nuestro código.En este caso, para cadenas
stry caractereschfunciona cada una de estas soluciones:let count = str.split(ch).length - 1(gracias a @Sarfraz )
o
let count = str.split('').filter(x => x == ch).lengtho
let count = 0 str.split('').forEach(x => x == ch ? count++ : null)¡Disfrutar!
fuente
var s = "dqsskjhfds"; alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the stringfuente
var a = "acvbasbb"; var b= {}; for (let i=0;i<a.length;i++){ if((a.match(new RegExp(a[i], "g"))).length > 1){ b[a[i]]=(a.match(new RegExp(a[i], "g"))).length; } } console.log(b);fuente