indexOf() メソッドは、呼び出す String オブジェクト中で、 fromIndex から検索を始め、指定された値が最初に現れたインデックスを返します。値が見つからない場合は -1 を返します。
このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
Array.prototype.indexOf() を参照してください。構文
str.indexOf(searchValue[, fromIndex])
引数
- searchValue
- 検索する値を表す文字列です。
- fromIndex Optional
- 検索する最初の位置を表す整数です。初期値は
0です。fromIndexの値が0未満ならば 0 に、str.lengthを超えるならばstr.lengthから検索します。
返値
searchValue で初めて出現したインデックスです。見つからなかった場合は、-1 です。
searchValue が空の文字列ならば 0 から str.length までの任意の位置で一致します。
詳細
文字列における文字は左から右にインデックス化されます。一番最初の文字のインデックスは 0 で、 stringName として呼び出された文字列における一番最後の文字は stringName.length - 1 です。
'Blue Whale'.indexOf('Blue'); // 0 を返します
'Blue Whale'.indexOf('Blute'); // -1 を返します
'Blue Whale'.indexOf('Whale', 0); // 5 を返します
'Blue Whale'.indexOf('Whale', 5); // 5 を返します
'Blue Whale'.indexOf('Whale', 7); // -1 を返します
'Blue Whale'.indexOf(''); // 0 を返します
'Blue Whale'.indexOf('', 9); // 9 を返します
'Blue Whale'.indexOf('', 10); // 10 を返します
'Blue Whale'.indexOf('', 11); // 10 を返します
indexOf() メソッドは大文字と小文字を区別します。例えば、以下の表現は -1 を返します。
'Blue Whale'.indexOf('blue') // -1 を返します
出現のチェック
'0' は true と評価されず、 '-1' は false と評価されないことに注意してください。それゆえ、特定の文字列がほかの文字列に含まれているかチェックする正確な方法は次のようになります。
'Blue Whale'.indexOf('Blue') !== -1; // true
'Blue Whale'.indexOf('Bloe') !== -1; // false
例
indexOf() を使う
以下の例は、"Brave new world" という文字列において、与えられた値の位置を求めるために、indexOf() を使用しています。
var str = 'Brave new world';
console.log('Index of first w from start is ' + str.indexOf('w')); // 8 を表示します
console.log('Index of "new" from start is ' + str.indexOf('new')); // 6 を表示します
indexOf() と 大文字と小文字の区別
以下の例は 2 つの文字列の変数を定義しています。それらの変数は、2 番目の文字列が大文字を含んでいることを除けば、同じ文字列を含んでいます。1 番目の console.log() メソッドは 19 を表示します。しかし、indexOf() メソッドは大文字と小文字を区別するので、"cheddar" という文字列は myCapString では見つけられません。ですから、console.log() メソッドは -1 を表示します。
var myString = 'brie, pepper jack, cheddar';
var myCapString = 'Brie, Pepper Jack, Cheddar';
console.log('myString.indexOf("cheddar") is ' + myString.indexOf('cheddar'));
// 19 を表示します
console.log('myCapString.indexOf("cheddar") is ' + myCapString.indexOf('cheddar'));
// -1 を表示します
ある文字列中で、ある 1 つの文字が出現する回数を数えるために indexOf() を使う
以下の例は、 count に、 str という文字列中で e という文字が出現する回数を設定します。
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); // 4 を表示
仕様書
ブラウザーの対応
| デスクトップ | モバイル | サーバー | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
indexOf | Chrome 完全対応 あり | Edge 完全対応 12 | Firefox 完全対応 1 | IE 完全対応 あり | Opera 完全対応 あり | Safari 完全対応 あり | WebView Android 完全対応 あり | Chrome Android 完全対応 あり | Firefox Android 完全対応 4 | Opera Android 完全対応 あり | Safari iOS 完全対応 あり | Samsung Internet Android 完全対応 あり | nodejs 完全対応 あり |
凡例
- 完全対応
- 完全対応