JavaScript indexOf(): encontrando a posição de um caractere ou string

Nesta documentação de JavaScript veremos como o método indexOf() pode ser utilizado para recuperar a posição inicial de um elemento, dentro de uma sequência de caracteres.

JavaScript indexOf()

Nesta documentação de JavaScript veremos como o método indexOf() do objeto String pode ser utilizado para recuperar a posição inicial de um elemento, dentro de uma sequência de caracteres. Caso esse elemento não exista, é retornado o valor -1.

Apresentaremos aqui como utilizar o método indexOf().

JavaScript indexOf(): Na prática
var stringExemplo = "Aprendendo JavaScript na DevMedia!"; // Valor retornado: 25 stringExemplo.indexOf("DevMedia"); // Valor retornado: 6 stringExemplo.indexOf("en", 4); // Valor retornado: 11 stringExemplo.indexOf("Java", -8); // Valor retornado: -1 stringExemplo.indexOf(".NET"); // Valor retornado: 12 stringExemplo.indexOf("a");

Como funciona o indexOf()?

Uma string pode ser vista como um array de caracteres, indexado da esquerda para a direita, onde a primeira posição é 0 e última o comprimento da string menos um. Considerando o seguinte código:

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var posicao = stringExemplo.indexOf("JavaScript");

O valor atribuído à variável posicao será o número 11, conforme a Figura 1.


Figura 1. Funcionamento do método indexOf()

Sintaxe

string.indexOf(elemento, [posicaoInicial])

Parâmetros

elemento é o valor a ser encontrado dentro da string;

posicaoInicial [opcional] é o número que determina a posição inicial a partir da qual o elemento deve ser buscado. Por padrão é 0. Caso seja informado um valor negativo, a busca começa da posição 0. Caso seja informado um valor maior que o da string em análise, a busca começa a partir da posição referente ao tamanho dessa string (string.length).

Valor de retorno

É retornada a posição da primeira ocorrência do elemento na string. Caso o elemento não seja encontrado, é retornada a posição -1.

Exemplos de indexOf()

Exemplo 1

No exemplo a seguir buscamos por parte de uma palavra:

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var resultado = stringExemplo.indexOf("Script");

O valor retornado é 15.

Run!
Exemplo 2

No exemplo a seguir utilizamos o parâmetro posicaoInicial. A busca pela substring “end” começará na posição 4, isto é, na primeira letra “n” de stringExemplo:

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var resultado = stringExemplo.indexOf("end", 4);

O valor retornado é 6.

Run!
Exemplo 3

No exemplo a seguir informamos um valor negativo para o parâmetro posicaoInicial. Isso fará com que a contagem de caracteres se inicie em 0.

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var resultado = stringExemplo.indexOf("end", -7);

O valor retornado é 3.

Run!
Exemplo 4

No exemplo a seguir demonstramos que indexOf() é case sensitive. Sendo assim, a palavra “javascript” não será encontrada, pois devido aos caracteres em minúscula, ela é diferente de “JavaScript”.

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var resultado = stringExemplo.indexOf("javascript");

O valor retornado é -1.

Run!
Exemplo 5

Por ser indexOf() um método do objeto String,podemos chamá-lo a partir de qualquer instância desse objeto, inclusive no caso abaixo:

var posicao = "Aprendendo JavaScript na DevMedia!".indexOf("end", 4)

O valor retornado é 6.

Run!
Exemplo 6

Neste exemplo desejamos saber se o valor de cep atende a um certo formato. Para isso verificamos se na posição 2 temos o caractere “.” e se na posição 6 temos o caractere “-”.

var cep = "22.000-000"; var cepFormatado = false; if(cep.indexOf(".") == 2 && cep.indexOf("-") == 6){ cepFormatado = true; }

Ao final desse script o valor de cepFormatado será true.

Run!
Exemplo 7

indexOf() é geralmente utilizada em conjunto com algum outro método da classe String para, a partir dela, obtermos um novo valor.

Neste exemplo desejamos deixar apenas a palavra DevMedia em negrito, adicionando a tag <b> ao redor desta palavra:

var stringExemplo = "Aprendendo JavaScript na DevMedia!"; var posicaoInicial = stringExemplo.indexOf("DevMedia"); var posicaoFinal = posicaoInicial + "DevMedia".length; var htmlExemplo = ""; for(caractere in stringExemplo) { htmlExemplo += stringExemplo.charAt(caractere); if(caractere == posicaoInicial - 1) { htmlExemplo += "<b>"; } if(caractere == posicaoFinal - 1) { htmlExemplo += "</b>"; } }

Ao final da execução deste script o valor de htmlExemplo será: "Aprendendo JavaScript na <b>DevMedia</b>!".

Run!

Compatibilidade entre navegadores

indexOf() é suportado por todos os browsers apresentados na Tabela 1.

indexOf() Chrome Firefox IE Edge Safari Opera
Sim Sim Sim Sim Sim Sim

Tabela 1. Compatibilidade do método x browsers.

Métodos semelhantes

Artigos relacionados