Compruebe si una cadena contiene una subcadena en JavaScript

Harshit Jindal 12 octubre 2023
  1. Use una expresión regular para verificar si una cadena contiene una subcadena en JavaScript
  2. Utilice String.includes() para comprobar si una cadena contiene una subcadena en JavaScript
  3. Utilice String.indexOf() para comprobar si una cadena contiene una subcadena en JavaScript
Compruebe si una cadena contiene una subcadena en JavaScript

Este tutorial enseña cómo comprobar si una cadena contiene una subcadena en JavaScript.

Es una tarea simple y común, pero diferentes lenguajes la manejan de diferentes maneras. Veremos los métodos integrados en JavaScript y los métodos personalizados para lograr el objetivo anterior.

Use una expresión regular para verificar si una cadena contiene una subcadena en JavaScript

Es uno de los métodos más potentes y tradicionales para comprobar la presencia de una subcadena. Nos da mucha flexibilidad en comparación con los métodos integrados porque con los métodos integrados de JavaScript, solo podemos verificar una cadena constante y no podemos cambiar la distinción entre mayúsculas y minúsculas de su comportamiento. Usaremos el método RegExp.test() para comprobar si hay subcadenas en una cadena.

let str = 'delftstack';
console.log(/stack/.test(str));

Producción :

true

Aquí usamos la función .test() para ver si la subcadena stack está presente dentro de la cadena delftstack y obtenemos true como resultado.

Pero la belleza de las expresiones regulares radica en el hecho de que podemos realizar búsquedas que no distinguen entre mayúsculas y minúsculas, lo que no es posible con los métodos de JavaScript integrados, e incluso podemos buscar patrones como una subcadena numérica de longitud fija sin siquiera saber qué es.

let str = 'delftstack';
console.log(stack / i.test(str));

Producción :

true

Agregamos i a la expresión /stack/, y podemos realizar la búsqueda sin distinción entre mayúsculas y minúsculas.

Utilice String.includes() para comprobar si una cadena contiene una subcadena en JavaScript

ES6 introdujo la función .includes() que nos ayuda a verificar si una subcadena determinada está presente dentro de la cadena. Devuelve un valor booleano que indica la presencia mediante true o false. Es un método que distingue entre mayúsculas y minúsculas y, por lo tanto, si la subcadena S se compara con s, devolverá false.

Este método toma 2 argumentos: el primero es la subcadena y el segundo es el índice desde el que queremos comenzar la búsqueda dentro de la cadena. Si el segundo argumento está fuera del límite izquierdo, es decir, es menor que 0, JavaScript inicia la búsqueda desde el índice 0. Si es mayor que la longitud de la cadena, devuelve directamente falso.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr));

Producción :

true

En el código anterior, pasamos la subcadena a la función, y devuelve true ya que stack está presente dentro de la cadena delftstack.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr, 4));

Producción :

true

Este código inicia la búsqueda de la palabra stack del índice quinto.

Utilice String.indexOf() para comprobar si una cadena contiene una subcadena en JavaScript

Antes de que ES6 introdujera el método String.includes(), el único método integrado era .indexOf(). Es bastante similar al método String.includes(). En lugar de devolver un valor booleano, este método devuelve el índice del primer carácter de la subcadena si la subcadena está presente dentro de la cadena dada y -1 si la subcadena no está presente.

const str = 'delftstack';
const substr = 'stack';
console.log(str.indexOf(substr) != -1);

Producción :

true

Puede que sea antiguo, pero es más preciso, ya que puede usarse como .includes() simplemente agregando una marca al resultado de la función para ver si no es igual a -1. A diferencia de .includes(), nos devuelve el índice exacto del comienzo de la subcadena y puede ser de mucha más importancia práctica.

Todos los métodos anteriores excepto String.includes() son compatibles con los principales navegadores. String.includes() fue introducido por ES6 y todavía no es compatible con Internet Explorer. Un método más para hacer esto será utilizar el algoritmo KMP (Knuth-Morris-Pratt), un algoritmo O(n) con amplias aplicaciones. Es un tema enorme en sí mismo, y lo cubriremos en una publicación futura.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Artículo relacionado - JavaScript String