Contar las veces que aparece un carácter en un String de Javascript

Para saber las veces que aparece un carácter en un string de Javascript podemos hacerlo de la siguiente forma:

var cadena = "Cuantas 'A' aparecen en esta cadena."

var indices = [];
for(var i = 0; i < cadena.length; i++) {
	if (cadena[i].toLowerCase() === "a") indices.push(i);
}

Esto nos devolverá "8", que son las veces que aparece la "A" en toda la cadena.

Podemos verlo funcionando en:

 



 

O utilizar la siguiente función:

function cuantasVecesAparece(cadena, caracter){
  var indices = [];
  for(var i = 0; i < cadena.length; i++) {
    if (cadena[i].toLowerCase() === caracter) indices.push(i);
  }
	return indices.length;
}

Donde le pasaríamos la cadena que queremos y el carácter a buscar...
Algo así por ejemplo:

var string = "Cuantas 'A' aparecen en esta cadena.";
var caracterBuscar = "a";
var coincidencias = cuantasVecesAparece(string, caracterBuscar);
// o 
var coincidencias = cuantasVecesAparece("Cuantas 'A' aparecen en esta cadena.", "a");

Y esto nos devolvería: 8

Para trastear:


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

13 Comments

claudia

Hola,
Estoy tratando de capturar la cantidad de cada caracteres ingresados en un texto, pero me muestra para las 3 letras de ejemplo la misma cantidad. Llevo 1 mes estudiando Javascript y no encuentro la solución. Porfa me ayudas!!!!!mil gracias….
Claudia.

var cadena = prompt(«Ingrese un texto»);

var indices = [];
for(var i = 0; i < cadena.length; i++) {
if (cadena[i].toLowerCase() === 'a') indices.push(i);
if (cadena[i].toLowerCase() === 'b') indices.push(i);
if (cadena[i].toLowerCase() === 'c') indices.push(i);
}//necesito ingresar todo el abecedario
console.log(indices.length + " : " + "a");
console.log(indices.length + " : " + "b");
console.log(indices.length + " : " + "c");

Reply
tulsi

Hola! me gustaria poder buscar una palabra en vez de una letra, estoy tratando de buscar algunos anagramas dentro de una cadena de strings… Sabras que tipo de funcion tendría que emplear??, de antemano muchas gracias

Reply
kike

Hola Tulsi,

Gracias por escribir (:
Dedicaré un post a explicar un poco mejor cómo hacer esto pero de momento te lo cuento rápidamente.
Podemos utilizar una expresión regular y la función match de Javascript para ello.

function cuantasVecesApareceUnaPalabra(cadena, palabra){
    return cadena.match(new RegExp('(\\w*' + palabra + '\\w*)','gi')).length;
}

Te pego el fiddle para que veas el ejemplo:

¡¡Saludos!!

Reply
kike

¡Hola Juan José!

Gracias por escribir, ¿A qué te refieres exactamente? Ponme un ejemplo y lo revolvemos entre los dos (:

¡Saludos!

Reply
RicG

Hola, quiero hacer una función en la que se pida al usuario que meta una frase y la web
responda con la cantidad de caracteres que se han escrito y las veces que se repite
cada uno de los que forman la frase, me vendría bien un poco de ayuda, ya que soy novato en esto.

Reply
kike

¡Hola RicG!

Claro, mira. A raíz de una consulta de una compañera escribí esta entrada: Contar las veces que aparece una letra en una frase con Javascript.

Para contar los carácteres totales puedes hacerlo con:


var cadena = "1234 5678 90";
// Si quieres saber la cantidad de caracteres (incluyendo espacios):
var numeroCaracteresConEspacios = cadena.length; // Obtendremos 12
// Si quieres saber la cantidad de caracteres (excluyendo espacios):
var numeroCaracteresSinEspacios = cadena.replace(/ /g,'').length; Obtendremos 10

Espero que te sirva (:

¡¡Saludos!!

Reply
RicG

Lo que me gustaría es ver si es posible con un bucle for, guardando en un array los caracteres y que lo recorriera buscando las repeticiones y que al principio le pidiesen al usuario que entra que escribiera la frase (con un prompt) que es de la que se van a sacar que caracteres salen y cuantas veces salen, no sé si me explico.

Reply
RicG

Hola, quería comentarte que hice la solución que me mostraste por aquí y no es exactamente eso, lo que quería era que recorriera un array donde he guardado las variables (en este caso las letras del abecedario) para una frase que introduce el usuario y que le diga, por ejemplo, la a aparece 7 veces, la b 5, la c 6, pero la frase la introduce el usuario, gracias por la ayuda y un saludo.

Reply
kike

Buenas RicG, gracias por volver a escribir (:

Mira a ver si este script te va mejor. Puedes editarlo con los tips que comentos en los posts: quitarle los espacios o dejarlos, diferenciar entre mayúsculas y minúsculas, etc…

¡Un saludo!

amanda

yo he hecho esto pero no me sale, me podría ayudar?

#include
using namespace std;

int main() {

string nombre, letra;
int i, longitud, contador=0;

cout<< "Dime una frase: ";
getline (cin, nombre);

cout<< "Dime letra a encontrar: ";
getline (cin, letra);

longitud = nombre.length();

for (i=0; i<longitud; i++ )
{
if (nombre == letra){

contador++;
}
}

cout << "La letra "<< letra << " aparece en "<< nombre << " "<< contador << " veces";

return 0;
}

Reply
kike

!Hola Amanda!

Lo siento, parece que estás usando c++ pero este post está orientado a Javascript.

Puedes buscar equivalencias para c++ y tendrás la solución, al fin y al cabo si conoces un lenguaje puedes manejarte mas o menos con otros.

!Saludos!

Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*