O método indexOf()
retorna o indíce da primeira ocurrência do valor especificado no objecto String
, começando a procura a partir de fromIndex
. Retorna -1 se o valor não for encontrado.
Sintaxe
str.indexOf(searchValue[, fromIndex]
)
Parâmetros
searchValue
- Uma string com o valor pelo qual se procura.
fromIndex
Optional- O ponto da string a partir do qual a procura deverá começar. Pode ter o valor de um qualquer inteiro. O valor por predefinição é 0. Se o
fromIndex < 0
a procura é feita em toda a string (o mesmo que passar o valor 0). SefromIndex >= str.length
, o método retornará -1, exceção feita quando o valor desearchValue
é uma string vazia, nesse caso retornastr.length
.
Descrição
Os caractéres numa string são indexadas da esquerda para a direita. O índice do primeira caractér é 0, e o índice do último caractér da string, chamado de 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('', 9); // retorna 9 'Blue Whale'.indexOf('', 10); // retorna 10 'Blue Whale'.indexOf('', 11); // retorna 10
Case-sensitivity
O método indexOf()
é sensível a maiúsculas e minúsculas. Por exemplo, a seguinte expressão retorna -1:
'Blue Whale'.indexOf('blue'); // retorna -1
Verificando ocorrências
Repara que '0' não é avaliado como true
e '-1' não é avaliado como false
. Sendo assim, a forma correta de verificar se uma string específica existe dentro de outra string deverá ser:
'Blue Whale'.indexOf('Blue') !== -1; // true 'Blue Whale'.indexOf('Bloe') !== -1; // false
Exemplos
Usando indexOf()
e lastIndexOf()
O seguinte exemplo usa indexOf()
e lastIndexOf()
para localizar valores na string "Brave new world"
.
var anyString = 'Brave new world'; console.log('O índice do primeiro w desde o início é ' + anyString.indexOf('w')); // imprime 8 console.log('O índice do primeiro w desde o fim é ' + anyString.lastIndexOf('w')); // imprime 10 console.log('O índice de "new" desde o início é ' + anyString.indexOf('new')); // imprime 6 console.log('O índice de "new" desde o fim é ' + anyString.lastIndexOf('new')); // imprime 6
indexOf()
e sensibilidade a maiúsculas e minúsculas
O seguinte exemplo define duas variáveis do tipo string. As variáveis contêm a mesma string exceto o facto da segunda string conter as todas as letras maiúsculas. O primeiro método console.log()
apresenta 19. Mas porque o método indexOf()
é sensível a maiúsculas e minúsculas, a string "cheddar"
não é encontrada em myCapString
, logo o segundo método console.log()
apresenta -1.
var myString = 'brie, pepper jack, cheddar'; var myCapString = 'Brie, Pepper Jack, Cheddar'; console.log('myString.indexOf("cheddar") é ' + myString.indexOf('cheddar')); // imprime 19 console.log('myCapString.indexOf("cheddar") é ' + myCapString.indexOf('cheddar')); // imprime -1
Usando indexOf()
para contar as ocorrências de uma letra numa string
O seguinte exemplo atribuí à variável count
o número de ocorrências da letra 'e' na string str
:
var str = 'To be, or not to be, that is the question.'; var count = 0; var pos = str.indexOf('e'); while (pos !== -1) { count++; pos = str.indexOf('e', pos + 1); } console.log(count); // imprime 4
Especificações
Especificação | Estado | Comentário |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Definição inicial. |
ECMAScript 5.1 (ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Standard |
Compatibilidade dos browsers
Funcionalidade | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suporte básico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Funcionalidade | Android | Chrome para Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suporte básico | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |