概要: このチュートリアルでは、JavaScript文字列indexOf()
メソッドを使用して文字列内の部分文字列のインデックスを見つける方法を学びます。
String.prototype.indexOf()
は、文字列(str
)内の部分文字列(substr
)の最初の一致のインデックスを返します。
let index = str.indexOf(substr, [, fromIndex]);
Code language: JavaScript (javascript)
str
にsubstr
が含まれていない場合は-1を返します。
fromIndex
は、検索を開始するインデックスを指定する省略可能なパラメーターです。デフォルトはゼロ(0)です。つまり、fromIndex
を省略すると、検索は文字列の先頭から開始されます。
indexOf()
は常に大文字と小文字を区別した検索を実行します。
文字列内の部分文字列の最後の一致のインデックスを見つけるには、lastIndexOf()
メソッドを使用します。
JavaScript文字列のindexOf()の例
indexOf()
メソッドの使用例をいくつか取り上げます。
1) indexOf()メソッドの使用例
次の例では、indexOf()
を使用して、文字列'finding substring in string'
内の部分文字列'str'
の最初の一致のインデックスを取得します。
let str = 'finding substring in string';
let index = str.indexOf('str');
console.log(index); // 11
Code language: JavaScript (javascript)
2) indexOf()を使用して文字列内の部分文字列の数をカウント
次の例では、indexOf()
メソッドを使用して、部分文字列'know'
が文字列'You do not know what you do not know until you know.'
内に何回出現するかをカウントします。
let str = 'You do not know what you do not know until you know.';
let substr = 'know';
let count = 0;
let index = str.indexOf(substr);
while(index !== -1) {
count++;
index = str.indexOf(substr, index + 1);
}
console.log(count);
Code language: JavaScript (javascript)
仕組み
- 最初に、
indexOf()
メソッドを使用して、str
内のsubstr
の最初の一致を見つけます。 - 次に、
while
ループを使用して、str
内のsubstr
の次の位置を、前回見つかった位置+ 1から繰り返し検索します。
3) indexOf()と大文字と小文字の区別
indexOf()
は、大文字と小文字を区別します。次の例を参照してください。
let str = 'JS indexOf';
let substr = 'js';
let index = str.indexOf(substr);
console.log(index); // -1
Code language: JavaScript (javascript)
この例では、indexOf()
は-1を返します。文字列JS IndexOf
には部分文字列js
が含まれていませんが、JS
は含まれています。
文字列内の部分文字列のインデックスを大文字と小文字を区別せずに検索するには、indexOf()
メソッドを使用する前に、部分文字列と文字列の両方を小文字に変換できます。
let str = 'JS indexOf';
let substr = 'js';
let index = str.toLocaleLowerCase().indexOf(substr.toLocaleLowerCase());
console.log(index); // 0
Code language: JavaScript (javascript)
まとめ
indexOf()
は、文字列内で部分文字列の最初の一致のインデックスを返します。または、文字列に部分文字列が含まれていない場合は-1を返します。indexOf()
は大文字と小文字を区別します。