indexOf() メソッドは、呼び出す String オブジェクト中で、 fromIndex から検索を始め、指定された値が最初に現れたインデックスを返します。値が見つからない場合は -1 を返します。

メモ: 配列メソッドについては 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 を表示

仕様書

仕様書 状態 備考
ECMAScript 1st Edition (ECMA-262) 標準 初回定義
ECMAScript 5.1 (ECMA-262)
String.prototype.indexOf の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.indexOf の定義
標準  
ECMAScript Latest Draft (ECMA-262)
String.prototype.indexOf の定義
ドラフト  

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, segayuu, YuichiNukiyama, teoli, ethertank, Potappo, Mgjbot
最終更新者: mfuji09,