Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. 文字列.indexOf() / lastIndexOf() / includes()

文字列.indexOf() / lastIndexOf() / includes()

文字列内の指定した文字列を検索し、その位置を返します。存在の有無だけを確認したい場合は『文字列.includes()』が便利です。

構文
// 先頭から検索して最初に見つかった位置を返します。
文字列.indexOf("検索文字列")
文字列.indexOf("検索文字列", 開始位置)

// 末尾から検索して最後に見つかった位置を返します。
文字列.lastIndexOf("検索文字列")
文字列.lastIndexOf("検索文字列", 開始位置)

// 文字列が含まれているかを true / false で返します。
文字列.includes("検索文字列")
文字列.includes("検索文字列", 開始位置)
メソッド一覧
メソッド概要
indexOf("検索文字列")先頭から検索し、最初に見つかった位置(インデックス)を返します。見つからない場合は『-1』を返します。
indexOf("検索文字列", 開始位置)指定した位置から検索を開始します。
lastIndexOf("検索文字列")末尾から検索し、最後に見つかった位置を返します。見つからない場合は『-1』を返します。
includes("検索文字列")文字列が含まれていれば『true』、含まれていなければ『false』を返します。
includes("検索文字列", 開始位置)指定した位置から検索を開始します。
サンプルコード
var str = "JavaScript is great. JavaScript is fun.";

// indexOf で最初に見つかった位置を取得します。
console.log(str.indexOf("JavaScript")); // 『0』と出力されます。
console.log(str.indexOf("is"));         // 『11』と出力されます。
console.log(str.indexOf("Python"));     // 見つからないため『-1』と出力されます。

// 2番目の引数で検索開始位置を指定できます。
console.log(str.indexOf("JavaScript", 1)); // 『21』と出力されます。

// lastIndexOf で最後に見つかった位置を取得します。
console.log(str.lastIndexOf("JavaScript")); // 『21』と出力されます。

// includes で存在確認を行います。
console.log(str.includes("great")); // 『true』と出力されます。
console.log(str.includes("Python")); // 『false』と出力されます。
実行結果

上記のコードを実行すると、コンソールには以下が出力されます。

0       // 先頭の『JavaScript』の位置
11      // 最初の『is』の位置
-1      // 『Python』は見つからない
21      // 位置1以降で最初に見つかった『JavaScript』の位置
21      // 最後に見つかった『JavaScript』の位置
true    // 『great』が含まれている
false   // 『Python』は含まれていない
概要

『文字列.indexOf()』と『文字列.lastIndexOf()』は文字列内で指定した文字列を検索し、見つかった位置(インデックス)を数値で返すメソッドです。『文字列.indexOf()』は先頭から、『文字列.lastIndexOf()』は末尾から検索を行います。見つからなかった場合はどちらも『-1』を返します。

単に文字列が含まれているかどうかを調べたい場合は『文字列.includes()』を使うと、『true』か『false』で結果が得られるためコードが読みやすくなります。『文字列.indexOf()』を使って存在確認を行う場合は str.indexOf("abc") !== -1 のように『-1』と比較する必要がありますが、『文字列.includes()』なら str.includes("abc") と簡潔に書けます。

いずれのメソッドも大文字と小文字を区別して検索します。大文字・小文字を無視して検索したい場合は、あらかじめ『文字列.toLowerCase()』で統一してから検索するとよいでしょう。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。