String.prototype.indexOf()

Il metodo indexOf() restituisce l'indice all'interno dell'oggetto String chiamante della prima occorrenza del valore specificato, avviando la ricerca su fromIndex. Restituisce -1 se il valore non viene trovato.

Note: Per il metodo dell'Array, vedere Array.prototype.indexOf().

Sintassi

str.indexOf(searchValue[, fromIndex])

Parametri

searchValue
Una stringa che rappresenta il valore da cercare. Se non viene fornita esplicitamente alcuna stringa, searchValue sarà forzato a "undefined" e questo valore verrà cercato nella stringa corrente.
fromIndex Optional
Un numero intero che rappresenta l'indice al quale avviare la ricerca; il valore predefinito è  0. Per valori fromIndex values inferiori a 0 o maggiori di str.length, la ricerca inizia rispettivamente con 0str.length.

Valore di ritorno

L'indice della prima occorrenza di searchValue o -1 se non trovato.
Una stringa vuota searchValue corrisponderà a qualsiasi indice tra 0 e str.length.

Descrizione

I caratteri in una stringa sono indicizzati da sinistra a destra. L'indice del primo carattere è 0 e l'indice dell'ultimo carattere di una stringa chiamata stringName è stringName.length - 1.

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

Il metodo indexOf() è case sensitive. Ad esempio, la seguente espressione restituisce -1:

'Blue Whale'.indexOf('blue'); // ritorna -1

Controllo delle occorrenze

Nota che '0' non valuta true e '-1' non valuta false. Pertanto, quando si verifica se esiste una stringa specifica all'interno di un'altra stringa, il modo corretto per verificare sarebbe:

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

Esempi

Usare indexOf()

Nell'esempio seguente viene utilizzato indexOf() per individuare i valori nella stringa "Brave new world".

const str = 'Brave new world';

console.log('L'indice della prima w dall'inizio è ' + str.indexOf('w'));  // logga 8
console.log('L'indice di "new" dall'inizio è ' + str.indexOf('new'));  // logga 6

indexOf() e il case-sensitivity

L'esempio seguente definisce due variabili stringa. Le variabili contengono la stessa stringa tranne che la seconda stringa contiene lettere maiuscole. Il primo metodo console.log() mostra 19. Ma poiché il metodo indexOf() è case sensitive, la stringa "cheddar" non si trova in myCapString, quindi il secondo metodo console.log() mostra -1.

const myString    = 'brie, pepper jack, cheddar';
const myCapString = 'Brie, Pepper Jack, Cheddar';

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

Uso di indexOf() per contare le occorrenze di una lettera in una stringa

L'esempio seguente imposta count sul numero di occorrenze della lettera e nella stringa str:

const str = 'Essere o non essere, questa è la domanda.';
let count = 0;
let position = str.indexOf('e');

while (position !== -1) {
  count++;
  position = str.indexOf('e', position + 1);
}

console.log(count); // mostra 4

Specifiche

Specifica Stato Commento
ECMAScript 1st Edition (ECMA-262) Standard Definizione iniziale.
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  
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Draft  

Compatibilità con i browser

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
indexOfChrome Full support YesEdge Full support 12Firefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Vedi anche