Cómo encontrar un carácter en una cadena con JavaScript

Javascript

En este sencillo tutorial vamos a ver cómo puedes encontrar o buscar un carácter en una cadena usando JavaScript. Para ello podemos usar los métodos includessearch, indexOf y lastIndexOf.

Usando el método includes

Todos los arrays y las cadenas de JavaScript incluyen el método includes de forma nativa, que acepta uno o más caracteres como parámetros.  El método devolverá true si la cadena contiene el carácter especificado, o false en caso contrario:

'Esto es una cadena'.includes('a'); // true
'Esto es una cadena'.includes('i'); // false

Sin embargo, el método includes no nos proporcionará información acerca del la posición en la que se ha encontrado el carácter.

El método includes es sensible a las mayúsculas, por lo que, por ejemplo, el carácter A no será el mismo que el carácter a.

Usando el método indexOf

Si también necesitas encontrar la posición en la que se encuentra el carácter, tendrás que usar el método indexOf, que devolverá la posición en la que se ha encontrado el carácter dentro de la cadena, o -1 en caso de que no esté presente:

'Esto es una cadena'.indexOf('E'); // 0
'Esto es una cadena'.indexOf('o'); // 3
'Esto es una cadena'.indexOf('z'); // -1

El método indexOf también es sensible a las mayúsculas, por lo que el carácter E no es el mismo que el carácter e.

En caso de existir varias ocurrencias, el método indexOf devolverá solamente la primera de ellas:

'Esto es una cadena'.indexOf('e'); // 5

Usando el método lastIndexOf

Si en lugar de encontrar la posición de la primera ocurrencia de un carácter quieres encontrar la última, debes usar el método lastIndexOf. Del mismo modo que el método indexOf, en caso de que el carácter no se encuentre en la cadena, el método devolverá el valor -1:

'Esto es una cadena'.lastIndexOf('E'); // 0
'Esto es una cadena'.lastIndexOf('a'); // 17
'Esto es una cadena'.lastIndexOf('z'); // -1

El método lastIndexOf también es sensible a las mayúsculas. Al igual que el método indexOf, en caso de existir varias ocurrencias, el método lastIndexOf devolverá solamente la última de ellas.

Usando el método search

El método search de JavaScript permite buscar una cadena en el interior de una cadena. Si la subcadena se encuentra, el método search devolverá la posición del primer carácter de la subcadena en el interior de la cadena. Si la subcadena no se encuentra, devolverá -1.

Si bien este método es preferible cuando se buscan cadenas de texto, también podemos usarlo para buscar caracteres independientes:

'Esto es una cadena'.search('E'); // 0
'Esto es una cadena'.search('o'); // 4
'Esto es una cadena'.search('z'); // -1

Al igual que el método indexOf, en caso de existir varias ocurrencias, el método search devolverá solamente la primera de ellas:

'Esto es una cadena'.search('e'); // 5

Esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

7 comentarios en “Cómo encontrar un carácter en una cadena con JavaScript

  1. gracias les pido ayuda
    l
    debo escribir el código necesario en la función findWord() para que retorne si la palabra existe en la frase.

    Descripción de la función

    Parámetros de la función:
    string phrase: frase en la cuál buscaras la palabra
    string word: palabra que deberas buscar en la frase
    La frase = «voy a aprender a programar» contiene la palabra programar
    La frase «Estoy aprendiendo mucho» no contiene la palabra «programar».
    si la palabra si esta en la cadena retornar true
    si la palabra no esta en la cadena retornar false

  2. Hola muchas gracias por la ilustración, pero me surge una pregunta, y si la palabra contiene más de una vez la letra, por ejemplo css contiene 2 s ¿Cómo puedo obtener la posición en la palabra de cada vez que la letra aparece?

      1. Se me ocurre q podrías usar un bucle for y en cada iteracion ir preguntando si contiene la sub cadena.
        function contarCaracter(string, character) {
        let result = [];
        if(typeof string !== ‘string’ && typeof character !== ‘string’){
        throw Error(«You must be insert a string in the arguments»);
        };

        for (let i = 0; i < string.length; i++) {
        if(string[i].includes(character)){
        result.push(i);
        }
        continue;
        };
        return result;
        };

        La probé un funciona! y si además quieren que no distinga entre Mayusculas y minusculas, solo hay q agregarle .toLowerCase() o .toUpperCase() al for, quedando asi:

        for (let i = 0; i < string.length; i++) {
        if(string[i].toLowerCase().includes(character.toLowerCase())){
        result.push(i);
        }

        Espero les sirva!

        GRACIAS EDU POR ESTA GUIA! me sirvió mucho!

Deja una respuesta

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

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”