String.prototype.lastIndexOf()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
lastIndexOf()
は String
値のメソッドで、この文字列を検索し、指定した部分文字列が最後に出現するインデックスを返します。オプションで開始位置を取り、指定した数値以下のインデックスにおいて、指定した部分文字列が最後にに出現するインデックスを返します。
試してみましょう
構文
lastIndexOf(searchString)
lastIndexOf(searchString, position)
引数
searchString
-
検索する値を表す文字列です。すべての値は文字列に変換されますので、省略したり
undefined
を渡したりすると、lastIndexOf()
は"undefined"
という文字列を検索します。これはおそらく望むところではないでしょう。 position
省略可-
このメソッドは、
position
(既定値は+Infinity
)以下の位置で、指定した部分文字列が最後に現れるインデックスを返します。position
が呼び出された文字列の長さよりも大きい場合、このメソッドは呼び出される文字列全体を検索します。position
が0
未満の場合、このメソッドは0
の場合と同じように動作します。すなわち、このメソッドは指定された文字列をインデックス0
でのみ検索します。-
'hello world hello'.lastIndexOf('world', 4)
は-1
を返します。部分文字列world
が現れるのは6
のインデックスですが、その位置は4
以下ではないからです。 -
'hello world hello'.lastIndexOf('hello', 99)
は12
を返します。部分文字列hello
が最後に現れる位置が、99
以下である12
の位置だからです。 -
'hello world hello'.lastIndexOf('hello', 0)
と'hello world hello'.lastIndexOf('hello', -5)
はどちらも0
を返します。hello
をインデックス0
でしか検索しないからです。
-
返値
searchString
が最後に出現した位置です。見つからなかった場合は、 -1
になります。
解説
文字列は 0 基点です。文字列の最初の文字のインデックスは 0
で、文字列の最後の文字のインデックスは文字列の長さから 1 を引いたものになります。
"canal".lastIndexOf("a"); // 3 を返す
"canal".lastIndexOf("a", 2); // 1 を返す
"canal".lastIndexOf("a", 0); // -1 を返す
"canal".lastIndexOf("x"); // -1 を返す
"canal".lastIndexOf("c", -5); // 0 を返す
"canal".lastIndexOf("c", 0); // 0 を返す
"canal".lastIndexOf(""); // 5 を返す
"canal".lastIndexOf("", 2); // 2 を返す
大文字小文字の区別
lastIndexOf()
メソッドは大文字と小文字を区別します。例えば、以下の式は -1
を返します。
"Blue Whale, Killer Whale".lastIndexOf("blue"); // -1 を返す
例
indexOf() と lastIndexOf() の使用
以下の例は、 indexOf()
と lastIndexOf()
を使用して文字列 "Brave, Brave New World"
の中の値の位置を示します。
const anyString = "Brave, Brave New World";
console.log(anyString.indexOf("Brave")); // 0
console.log(anyString.lastIndexOf("Brave")); // 7
仕様書
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.lastindexof |
ブラウザーの互換性
BCD tables only load in the browser