.indexOf()

呼び出された文字列オブジェクト上で、fromIndexから検索を開始して、 指定された値が最初に見つかった位置のインデックスを返します。 もし値が見つからなければ、-1を返します。

文法

str.indexOf(searchValue[, fromIndex])
引数 説明
searchValue 検索する文字列を指定します。
fromIndex 呼び出された文字列の検索を開始する位置を指定します。 整数を指定することが可能で、デフォルトは0になります。 0より小さい値が渡された場合、 文字列全体が検索されます。(0を渡したのと同じになります。) もし、文字列の長さ(str.length)より大きな値が渡された場合、-1が返されます。 ただし、searchValueが空文字の場合は、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("", 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は存在する)
"Blue Whale".indexOf("Bloe") != -1; // false(Bloeは存在しない)

indexOfとlastIndexOfの使用例

下記の例は、indexOfとlastIndexOfを使用して、 "Brave new world"文字列内での位置を特定しています。

var anyString = "Brave new world";

console.log("先頭から検索して最初にwが見つかるのは、" + anyString.indexOf("w"));
// 8を出力
console.log("末尾から検索して最初にwが見つかるのは、" + anyString.lastIndexOf("w"));
// 10を出力(2つ目のworldのwのインデックス番号は10)

console.log("先頭から検索して最初に'new'が見つかるのは、" + anyString.indexOf("new"));
// 6を出力
console.log("末尾から検索して最初に'new'が見つかるのは、" + anyString.lastIndexOf("new"));
// 6を出力

例: indexOfと大文字・小文字の区別

下記の例では、2つの文字列の変数を定義しています。 変数は、2つ目の文字列が大文字を含むことを除き、同じ文字列を含んでいます。 1つ目のメソッドでは、19が出力されます。 ただし、indexOfメソッドは大文字・小文字が区別されるため、 "cheddar"がmyCapString変数内では見つからず、 2つ目のメソッドでは-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を出力

例: indexOfを使用して、文字列内に存在する文字の数をカウント

下記は、文字列str内に、文字xがいくつ存在するかをcount変数に代入する例になります。

count = 0;
pos = str.indexOf("x");

while ( pos != -1 ) {
   count++;
   pos = str.indexOf("x", pos + 1);
}

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。