String.prototype.indexOf()
==========================

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 de `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 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`. 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.

### 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`:


```js
"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:


```js
"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`.


```js
"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:


```js
"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`".


```js
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`.


```js
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`:


```js
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 with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* `String.prototype.charAt()`
* `String.prototype.lastIndexOf()`
* `String.prototype.includes()`
* `String.prototype.split()`
* `Array.prototype.indexOf()`