Verifique se uma string contém substring em JavaScript
- Use a expressão regular para verificar se uma string contém uma substring em JavaScript
-
Use
String.includes()para verificar se uma string contém substring em JavaScript -
Use
String.indexOf()para verificar 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 5º.
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 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