String.prototype.indexOf()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Sumário
O método indexOf()
retorna o índice da primeira ocorrência do valor fornecido em searchValue, 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
terá o valor deundefined
, e esse valor será buscado na string atual. Por exemplo,'undefined'.indexOf()
retornará0
, já queundefined
é encontrado na posição0
. Já'undefine'.indexOf()
retornará-1
, já queundefined
não pôde ser encontrado. fromIndex
-
Um número inteiro representando um índice da string original a partir da qual a busca deve começar. Por padrão é
0
. SefromIndex < 0
, a string toda é percorrida (equivale a passar 0). SefromIndex >= str.length
, o método retornará-1
, já que a busca será iniciada após o final da string.
Valor retornado
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
:
"Olá, mundo".indexOf(""); // retorna 0
"Olá, mundo".indexOf("", 0); // retorna 0
"Olá, mundo".indexOf("", 3); // retorna 3
"Olá, mundo".indexOf("", 8); // retorna 8
Entretanto, com qualquer fromIndex
igual ou maior que o comprimento da string, o valor retornado é o comprimento da string:
"Olá, mundo".indexOf("", 11); // retorna 10
"Olá, mundo".indexOf("", 13); // retorna 10
"Olá, mundo".indexOf("", 22); // retorna 10
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("Whale"); // retorna 5
"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
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()
O exemplo a seguir usa indexOf()
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 de 'new' partindo do começo é " + anyString.indexOf("new"),
);
// Exibe 6
indexOf()
e sensibilidade a maiúsculas e minúsculas
O exemplo a seguir define duas variáveis string. Ambas 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 letras maiúsculas e minúsculas, 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
:
const str = "Serx ou não ser, eisx a questão";
count = 0;
pos = str.indexOf("x"); // retorna 3
while (pos != -1) {
count++;
pos = str.indexOf("x", pos + 1 /* o mesmo que 3 + 1 */);
}
console.log(count);
Especificações
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.indexof |
Navegadores compatíveis
BCD tables only load in the browser