indexOf の目的は、文字列内の単語の位置を見つけることです
lastIndexOf も単語検索です。両者の違いは、前者は文字列の先頭から開始し、後者は文字列の末尾から開始することです。
指定した単語が見つかると、その単語の現在の位置番号が返されます。見つからない場合は、-1 を返します。
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/")); //0 console.log(str.lastIndexOf("/")); //39
パラメータ 1 は検索する単語です。str である必要があります。正規表現は機能しません。
2 番目のパラメータも受け入れます。数値型なので検索範囲を指定できます。
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.indexOf("/", 0)); //0 默认情况是 0 console.log(str.lastIndexOf("/", str.length)); //39 默认情况是 str.length
2 つのメソッドの制御は異なる方向にあります。
indexOf が 10 に設定されていると仮定すると、検索範囲は 10 から str.length (文字の終わり) までとなります
lastIndexOf が 10 に設定されている場合、検索範囲は 10 から 0 (プレフィックス) になります
これに注意する必要があります。
追記:-500などのマイナスの数値にすると自分でも理解できない不思議な現象が起こります = = " ;
n 番目を指定したい場合は、上記の方法で実現できます。
例:
String.prototype.myIndexOf = function (searchValue, startIndex) { var text = this; startIndex = startIndex || 1; var is_negative = startIndex < 0; var ipos = (is_negative) ? text.length + 1 : 0 - 1; var loopTime = Math.abs(startIndex); for (var i = 0; i < loopTime ; i++) { ipos = (is_negative) ? text.lastIndexOf(searchValue, ipos - 1) : text.indexOf(searchValue, ipos + 1); if (ipos == -1) break; } return ipos; }
var str = "//www.stooges.com.my/test/index.aspx123/"; console.log(str.myIndexOf("/", 3)); //20 console.log(str.myIndexOf("/", -2)); //25 倒数第2个的位置