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.
truesi lo encuentra.falsesi 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()devuelvetruesi encuentra coicidencia en cualquier sitio de la cadena.stratsWith()devuelvetruesi 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()yendsWith()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.