¿Existe una forma sencilla de comprobar cuántas veces aparece un personaje en una cadena?
¿Existe una forma sencilla de comprobar cuántas veces aparece un personaje en una cadena?
Respuestas:
Puede eliminar cualquier otro carácter de la cadena y comprobar la longitud:
str.replace(/[^a]/g, "").length
Aquí se cuenta cuántos as hay str.
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
Esto cuenta a en 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"
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 el lengthmétodo para recuperar el número de entradas de la matriz. ¡Simple como eso!
a" en string, entonces string.match(/a/gi)es igual nully tiene un error Cannot read property 'length' of null.
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 caracteres chfunciona cada una de estas soluciones:
let count = str.split(ch).length - 1
(gracias a @Sarfraz )
o
let count = str.split('').filter(x => x == ch).length
o
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
¡Disfrutar!
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
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);