Saltar al contenido principal

Operaciones con Strings

Los Strings ofrecen muchas posibilidades y funciones predeterminadas de JavaScript que nos ayudan a trabajan con cadenas. En este apartado veremos las más comunes.

Buscar texto en un String

En muchas ocasiones no necesitamos acceder a un carácter concreto, sino comprobar si una palabra, una letra o un fragmento de texto aparece dentro de una cadena.

Por ejemplo:

  • Comprobar si un correo electrónico contiene el símbolo @.
  • Saber si un archivo termina en .pdf.
  • Verificar si un usuario ha escrito una determinada palabra.
  • Buscar un producto por su nombre.

JavaScript incorpora varios métodos que facilitan este tipo de tareas.

En este apartado aprenderemos los más utilizados:

  • includes()
  • startsWith()
  • endsWith()
  • indexOf()
  • lastIndexOf()

El método includes()

includes() permite comprobar si un String contiene otro String.

Su resultado siempre será un valor booleano.

  • true si lo encuentra.
  • false si no lo encuentra.

Responde a preguntas como:

  • El email contiene un @
  • La palabra termina en "er"

Sintaxis

cadena.includes(texto)

Ejemplo

Queremos saber si un email contiene el "@".

const lenguaje = "maria@gmail.com";

console.log(lenguaje.includes("@"));

Salida:

true

La salida es true porque ha encontrado la "@" en el texto "maria@gmail.com". Si no la encontrase el resultado sería false.

Funciona tanto con una sola letra.

const palabra = "Montaña";

console.log(palabra.includes("ñ"));

Salida:

true

Como con textos más largos:

const palabra = "Montaña";

console.log(palabra.includes("tañ"));

Salida:

true

includes() distingue entre mayúsculas y minúsculas

Este detalle es muy importante.

const palabra = "JavaScript";

console.log(palabra.includes("java"));

Salida:

false

Aunque parecen la misma palabra, "Java" y "java" no son iguales.


El método startsWith()

startsWith() comprueba si un String comienza por un determinado texto.

También devuelve true o false.


Sintaxis

cadena.startsWith(texto)

Ejemplo

const archivo = "documento.pdf";

console.log(archivo.startsWith("doc"));

Salida:

true

Otro ejemplo.

const ciudad = "Barcelona";

console.log(ciudad.startsWith("Bar"));

Salida:

true

Si el texto no coincide con el comienzo de la cadena, devolverá false, puesto que busca el texto solo en el inicio de la cadena.

Esta es básicamente la diferencia con includes():

  • includes() devuelve true si encuentra coicidencia en cualquier sitio de la cadena.
  • stratsWith() devuelve true si encuentra coicidencia solo al incio de la cadena.

Con stratsWith():

console.log(ciudad.startsWith("cel"));

Salida:

false

Con includes():

console.log(ciudad.includes("cel"));

Salida:

true

El método endsWith()

endsWith() hace exactamente lo contrario que startsWith().

Comprueba si un String termina con un determinado texto.


Sintaxis

cadena.endsWith(texto)

Ejemplo

const archivo = "foto.jpg";

console.log(archivo.endsWith(".jpg"));

Salida:

true

Otro ejemplo.

const correo = "usuario@gmail.com";

console.log(correo.endsWith(".com"));

Salida:

true

El método indexOf()

Hasta ahora solo sabíamos si un texto existía o no.

Pero en ocasiones también queremos saber en qué posición aparece.

Para ello utilizamos indexOf().

Esta función indexOf() no devuelve true/false, sino un número que equivale a la posición del caracter en el texto.


Sintaxis

cadena.indexOf(texto)

Ejemplo

Podemos buscar una letra en concreto:

const frase = "Playa";

console.log(frase.indexOf("y"));

Salida:

3

O buscar la posición de un texto más largo:

const frase = "Aprender JavaScript";

console.log(frase.indexOf("Java"));

Salida:

10

En este segundo caso el número indica el índice donde comienza la palabra buscada.


Si el texto no existe, devuelve el índice -1.

const frase = "Aprender JavaScript";

console.log(frase.indexOf("Python"));

Salida:

-1

El valor -1 significa que no se ha encontrado.


El método lastIndexOf()

lastIndexOf() funciona igual que indexOf(), pero busca desde el final de la cadena. Es como pensar "cuál es la última posición en la que aparece una 'a'".

Es muy útil cuando un texto aparece varias veces.


Sintaxis

cadena.lastIndexOf(texto)

Ejemplo

const texto = "casa casa casa";

console.log(texto.lastIndexOf("casa"));

Salida:

10

En este caso devuelve la posición de la última aparición.


Comparación entre los métodos

Método¿Qué devuelve?
includes()true o false
startsWith()true o false
endsWith()true o false
indexOf()La primera posición o -1
lastIndexOf()La última posición o -1

Ejemplos

Ejemplo 1. Comprobar si una contraseña contiene un número

const contraseña = "abc123";

console.log(contraseña.includes("1"));

Salida:

true

Ejemplo 2. Verificar una extensión de archivo

const archivo = "factura.pdf";

console.log(archivo.endsWith(".pdf"));

Salida:

true

Ejemplo 3. Comprobar el dominio de un correo

const correo = "usuario@hotmail.com";

console.log(correo.endsWith(".com"));

Salida:

true

Ejemplo 4. Buscar una palabra dentro de una frase

const frase = "Hoy hace buen tiempo";

console.log(frase.includes("buen"));

Salida:

true

Ejemplo 5. Obtener la posición de una palabra

const texto = "Curso de JavaScript";

console.log(texto.indexOf("JavaScript"));

Salida:

9

Errores frecuentes

Pensar que includes() devuelve la posición

const texto = "Hola";

console.log(texto.includes("o"));

Salida:

true

includes() solo responde si existe o no.

Si necesitas conocer la posición, utiliza indexOf().


Olvidar que distingue mayúsculas y minúsculas

const palabra = "JavaScript";

console.log(palabra.includes("javascript"));

Salida:

false

Esperar que indexOf() devuelva false

const palabra = "JavaScript";

console.log(palabra.indexOf("Python"));

Salida:

-1

Cuando no encuentra el texto devuelve -1, no false.


Buenas prácticas

  • Utiliza includes() cuando solo necesites saber si un texto existe.
  • Utiliza startsWith() y endsWith() para validar prefijos y sufijos.
  • Utiliza indexOf() cuando también necesites conocer la posición.
  • Recuerda que todos estos métodos distinguen entre mayúsculas y minúsculas.
  • Elige siempre el método que mejor exprese tu intención; hará que el código sea más fácil de leer.