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