本記事では、JavaScriptのString lastIndexOf()メソッドを使用して、ある文字列の中で部分文字列を検索し、その部分文字列が最後に現れる場所を見つける方法を解説します。
JavaScriptのlastIndexOf()メソッドとは
indexOf()メソッドはJavaScriptのString型のメソッドであり、ある文字列中において別の部分文字列を検索し、最後に現れる部分文字列のインデックス番号を返します。
let インデックス番号 = 文字列1.lastIndexOf(文字列2, startIndex]);
文字列1に文字列2が含まれない場合は-1を返します。
lastIndexOf()メソッドは、startIndexから遡って部分文字列を検索する。startIndexはオプションで、デフォルトの場合(startIndexを省略した場合)は、文字列の末尾から検索を開始します。
startIndexが文字列1.length 以上の場合、lastIndexOf() は文字列全体の中から文字列2を探します。
またlastIndexOf()メソッドは、常に大文字と小文字を区別して検索します。
ちなみに、文字列の中で部分文字列が最初に出現するインデックスを取得する場合は、 indexOf()メソッドを使用します。
lastIndexOf()メソッドを使用したコード例
文字列内の部分文字列を検索する方法
以下は、 lastIndexOf() メソッドを使って、文字列 ‘baseball’ の中に ‘b’ という部分文字列が最後に現れる位置(インデックス)を取得しているコード例です。
let sampleString = 'baseball';
let resultIndex = sampleString.lastIndexOf('b');
console.log(resultIndex); // 4
第2引数(startIndex)を渡すと、以下のようにlastIndexOf()メソッドはstartIndexから逆方向の検索を開始するようになります。
let sampleString = 'baseball';
let resultIndex = sampleString.lastIndexOf('b', 3);
console.log(index); // 0
lastIndexOf()で大文字小文字を区別する
lastIndexOf() は、大文字と小文字を区別する。次の例は、-1 を返します。
let sampleString = 'baseball';
let largeStr = 'B';
let index = sampleString.lastIndexOf(largeStr);
console.log(index); // -1
文字列内で部分文字列が最後に出現するインデックスを、大文字小文字を区別せずに検索する場合は、以下のように元々の文字列と部分文字列の両方を小文字に変換してからlastIndexOf()メソッドを適用します。
let sampleString = 'baseball';
let largeStr = 'B';
let index = sampleString.toLocaleLowerCase().lastIndexOf(largeStr.toLocaleLowerCase());
console.log(index); // 4
JavaScriptのlastIndexOf()メソッドまとめ
- lastIndexOf()は、文字列中に部分文字列が最後に出現するインデックスを返し、文字列中に部分文字列 がない場合は -1 を返す
- 文字列の末尾から、あるいは第2引数が利用可能な場合はその引数の位置から、部分文字列を逆向きに検索する
- lastIndexOf()は大文字と小文字を区別して検索する