Verifique se uma string contém substring em JavaScript

Harshit Jindal 12 outubro 2023
  1. Use a expressão regular para verificar se uma string contém uma substring em JavaScript
  2. Use String.includes() para verificar se uma string contém substring em JavaScript
  3. Use String.indexOf() para verificar se uma string contém substring em JavaScript
Verifique se uma string contém substring em JavaScript

Este tutorial ensina como verificar se uma string contém uma substring em JavaScript.

É uma tarefa simples e comum, mas diferentes linguagens a tratam de maneiras diferentes. Veremos os métodos integrados no JavaScript e métodos personalizados para atingir o objetivo acima.

Use a expressão regular para verificar se uma string contém uma substring em JavaScript

É um dos métodos mais poderosos e tradicionais para verificar a presença de uma substring. Isso nos dá muita flexibilidade em comparação com os métodos integrados porque, com os métodos integrados do JavaScript, podemos apenas verificar uma string constante e não podemos alterar a distinção entre maiúsculas e minúsculas de seu comportamento. Estaremos usando o método RegExp.test() para verificar se há substrings em uma string.

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

Resultado:

true

Aqui usamos a função .test() para ver se a substring stack está presente dentro da string delftstack e obtemos true como resultado.

Mas a beleza do regex reside no fato de que podemos fazer pesquisas que não diferenciam maiúsculas de minúsculas, o que não é possível com métodos JavaScript integrados, e podemos até procurar padrões como uma substring numérica de comprimento fixo, mesmo sem saber o que é.

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

Resultado:

true

Acrescentamos i à expressão /stack/ e podemos fazer a pesquisa sem distinção entre maiúsculas e minúsculas.

Use String.includes() para verificar se uma string contém substring em JavaScript

ES6 introduziu a função .includes() que nos ajuda a verificar se uma determinada substring está presente dentro da string. Ele retorna um valor booleano informando a presença por true ou false. É um método que diferencia maiúsculas de minúsculas e, portanto, se a substring S for correspondida com s, ela retornará false.

Este método leva 2 argumentos: o primeiro é a substring e o segundo é o índice a partir do qual queremos iniciar a pesquisa dentro da string. Se o segundo argumento estiver fora do limite esquerdo, ou seja, for menor que 0, o JavaScript iniciará a pesquisa a partir do índice 0. Se for maior que o comprimento da string, ele retornará falso diretamente.

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

Resultado:

true

No código acima, passamos a substring para a função e ela retorna true, pois stack está presente dentro da string delftstack.

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

Resultado:

true

Este código inicia a busca da palavra stack no índice .

Use String.indexOf() para verificar se uma string contém substring em JavaScript

Antes do ES6 introduzir o método String.includes(), o único método integrado era o .indexOf(). É muito semelhante ao método String.includes(). Em vez de retornar um valor booleano, este método retorna o índice do primeiro caractere da substring se a substring estiver presente dentro da string fornecida e -1 se a substring não estiver presente.

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

Resultado:

true

Pode ser antigo, mas é mais preciso, pois pode ser usado como .includes() apenas adicionando uma verificação no resultado da função para ver se ele não é igual a -1. Ao contrário de .includes(), ele retorna para nós o índice exato do início da substring e pode ser de importância muito mais prática.

Todos os métodos acima, exceto String.includes(), são suportados por todos os principais navegadores. String.includes() foi introduzido pelo ES6 e ainda não é compatível com o Internet Explorer. Mais um método para fazer isso será usar o algoritmo KMP (Knuth-Morris-Pratt), um algoritmo O(n) com extensas aplicações. É um tópico enorme em si, e vamos cobrir isso em um post futuro.

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

Artigo relacionado - JavaScript String