Cómo encontrar una palabra dentro de una cadena con IndexOf en JavaScript

Aprende a buscar palabras o valores dentro de una cadena usando el método indexOf en JavaScript. Esta es una tarea fundamental en programación, por que es útil para realizar validaciones o correcciones en nuestros programas. A continuación te muestro un ejemplo, pero sigue leyendo para aprender cómo funciona.

// esta es la cadena donde buscaremos
let cadena = "Este era un gato con los pies de trapo";
// esta es la palabra a buscar
let termino = "gato";
// para buscar la palabra hacemos
let posicion = cadena.indexOf(termino);
if (posicion !== -1)
	console.log("La palabra está en la posición " + posicion);
else
	console.log("No encontré lo que estás buscando");

Sintaxis

string.indexOf(valor, posicionInicial)

El método indexOf() en una cadena o string nos devuelve la posición de la primera ocurrencia de un término de búsqueda, funciona de la siguiente manera:

  • valor es la palabra que deseamos encontrar.
  • posicionInicial es opcional e indica la posición inicial de la búsqueda. Recuerda que en JavaScript la posición inicia en CERO y si no pasas este dato, la búsqueda comienza en el inicio de la cadena.

Esta rutina nos devuelve un valor numérico con la posición en la que encontró el valor indicado. Si lo encuentra devuelve la posición comenzando con CERO, pero si no lo encuentra devuelve -1.

Forma correcta para validar indexOf en JavaScript

Este método nos devuelve -1 cuando el valor no se encontró en la cadena, pero recuerda que en JavaScript -1 es igual a “-1”, así que la forma correcta de validarlo es usando el operador !==.

Observa el ejemplo inicial, aquí utilizamos este operador para determinar si la palabra “gato” está dentro de la cadena:

let posicion = cadena.indexOf(termino);
if (posicion !== -1)
	console.log("La palabra está en la posición " + posicion);
else
	console.log("No encontré lo que estás buscando");

IndexOf es sensible a mayúsculas

Desafortunadamente el método indexOf() no puede distinguir entre mayúsculas y minúsculas. Por tanto, si en el ejemplo el término buscado fuera “Gato” (con la “g” en mayúscula), el resultado sería -1. Haz la prueba y verás el resultado.

Para resolver esta situación usando este método, lo que podríamos hacer es pasar el texto a minúsculas (o mayúsculas) antes de evaluarlo. Por ejemplo:

// esta es la cadena donde buscaremos
let cadena = "Este Era Un Gato Con Los Pies De Trapo";
// esta es la palabra a buscar
let termino = "GATO";
// para buscar la palabra hacemos
let posicion = cadena.toLowerCase().indexOf(termino.toLowerCase());
if (posicion !== -1)
	console.log("La palabra está en la posición " + posicion);
else
	console.log("No encontré lo que esás buscando");

IMPORTANTE: Toma en cuenta que convertir a mayúsculas o minúsculas consume recursos de la máquina, por tanto debes utilizarlo con discreción. Es decir, no utilices este método si el texto que vas a evaluar es muy extenso.

Cómo encontrar más de una ocurrencia

Pasemos a un ejemplo más interesante, supongamos que deseo cambiar la palabra “ato” por “atito” en todas las ocurrencias en una cadena. Para lograrlo utilizo un código como el que sigue:

// esta es la frase original
var cadena = "Era una vez un gato y un zapato que deseaban ser amigos de un pato";
// encuentra la primer posición de "ato"
var posicion = cadena.indexOf("ato");
// y mientras tengas una posición mayor o igual que 0,
// (recuerda que -1 significa que no lo encontró)
while (posicion >= 0)
{
	// remplaza "ato" por "atito"
	cadena = cadena.slice(0, posicion) + "atito" + cadena.slice(posicion + 3);
	// busca la siguiente ocurrencia de la palabra
	posicion = cadena.indexOf("ato");
}

console.log(cadena);

Observa que,

  • En la línea 4, obtengo la primer posición de la palabra.
  • En la línea 7 creo un bucle, de tal forma que siempre que el valor de “posicion” sea mayor o igual a cero ejecute ese código.
  • En la línea 12 obtengo la siguiente posición justo antes de iniciar de nuevo el bucle.

Slice

Esta es otra herramienta con bastante funcionalidad en JavaScript y tengo un artículo que explica cómo usarla con ejemplos prácticos. No dudes visitar el artículo si quieres aprender un poco más.


Posted

in

by

Comments

Deja un comentario

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