String.prototype.indexOf()

Esta tradução está incompleta. Ajude a traduzir este artigo em inglês

Sumário

O método indexOf() retorna o índice da primeira ocorrência do valor especificado em searchValue dentro do objeto String para o qual foi chamado, começando a busca a partir de fromIndex. Retorna -1 se o valor não for encontrado.

Nota: Para o método de Array, veja Array.prototype.indexOf().

Sintaxe

str.indexOf(searchValue[, fromIndex])

Parâmetros

searchValue
Uma string representando o valor a ser buscado. Se nenhuma string for fornecida explicitamente, searchValue será forçado para "undefined", e esse valor será buscado na string atual. Por exemplo, 'undefined'.indexOf() retornará 0, já que undefined é encontrado na posição 0. Já 'undefine'.indexOf() retornará -1, já que undefined não pode ser encontrado.
fromIndex
A posição da string original a partir da qual a busca deve começar; por padrão é 0. Se fromIndex < 0, a string toda é percorrida (equivale a passar 0). Se fromIndex >= str.length, o método retornará -1, já que a busca será iniciada após o final da string.

Retorno

O índice da primeira ocorrência de searchValue, ou -1 se não for encontrado.

Uma string vazia no searchValue produz resultados estranhos. Sem fromIndex, ou com qualquer fromIndex menor que o comprimento da string, o valor retornado é o próprio fromIndex:

'hello world'.indexOf('') // retorna 0
'hello world'.indexOf('', 0) // retorna 0
'hello world'.indexOf('', 3) // retorna 3
'hello world'.indexOf('', 8) // retorna 8

Entretanto, com qualquer fromIndex igual ou maior que o comprimento da string, o valor retornado é o comprimento da string:

'hello world'.indexOf('', 11) // retorna 11
'hello world'.indexOf('', 13) // retorna 11
'hello world'.indexOf('', 22) // retorna 11

Descrição

Caracteres em uma string são indexados da esquerda para a direita. O índice do primeiro caractere é 0, e o índice do último caractere de uma string chamada stringName é stringName.length - 1.

"Blue Whale".indexOf("Blue");     // retorna  0
"Blue Whale".indexOf("Blute");    // retorna -1
"Blue Whale".indexOf("Whale", 0); // retorna  5
"Blue Whale".indexOf("Whale", 5); // retorna  5
"Blue Whale".indexOf("Whale", 7); // retorna -1
"Blue Whale".indexOf("");         // retorna  0
"Blue Whale".indexOf("", 9);      // retorna  9
"Blue Whale".indexOf("", 10);     // retorna 10
"Blue Whale".indexOf("", 11);     // retorna 10

Sensível a maiúsculas e minúsculas

O método indexOf é sensível a letras maiúsculas e minúsculas. Por exemplo, a expressão a seguir retorna -1:

"Blue Whale".indexOf("blue") // retorna -1

Verificando ocorrências

Note que um retorno '0' não implica em true, e '-1' não implica em false. Portanto a maneira correta de se verificar se uma string específica está contida em outra string seria:

"Blue Whale".indexOf("Blue") !== -1; // true
"Blue Whale".indexOf("Bloe") !== -1; // false

Exemplos

Usando indexOf() e lastIndexOf()

O exemplo a seguir usa indexOf e lastIndexOf para localizar valores dentro da string "Brave new world".

var anyString = "Brave new world";

console.log("O índice do primeiro w partindo do começo é " + anyString.indexOf("w"));
// Exibe 8
console.log("O índice do primeiro w partindo do final é " + anyString.lastIndexOf("w")); 
// Exibe 10

console.log("O índice de 'new' partindo do começo é " + anyString.indexOf("new"));   
// Exibe 6
console.log("O índice de 'new' partindo do final é " + anyString.lastIndexOf("new"));
// Exibe 6

indexOf() e sensibilidade a maiúsculas e minúsculas

O exemplo a seguir definie duas variáveis string. Elas contém a mesma string, exceto que a segunda string tem letras maiúsculas. O primeiro método console.log() exibe 19. Porém, como o método indexOf é sensível a caixa, a string "cheddar" não é encontrada em myCapString, portanto o segundo método console.log() exibe -1.

var myString    = "brie, pepper jack, cheddar";
var myCapString = "Brie, Pepper Jack, Cheddar";

console.log('myString.indexOf("cheddar") é ' + myString.indexOf("cheddar"));    
// Exibe 19
console.log('myCapString.indexOf("cheddar") é ' + myCapString.indexOf("cheddar")); 
// Exibe -1

Usando indexOf() para contar as ocorrências de uma letra numa string

O exemplo a seguir atribui à variável count o número de ocorrências da letra x na string str:

count = 0;
pos = str.indexOf("x");

while ( pos != -1 ) {
   count++;
   pos = str.indexOf( "x",pos + 1 );
}

Especificações

Especificação Situação Comentário
ECMAScript 1st Edition (ECMA-262) Padrão Definição inicial.
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Padrão
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Padrão

Compatibilidade em navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
indexOfChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Veja também