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個參數。Number類型, 這個讓我們可以指定尋找的范圍。
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
兩個方法的控制是不同方向的 。
假設 indexOf 設置 10 , 那麼查找范圍是 從10到str.length(字末)
lastIndexOf 設置 10 的話 , 查找范圍會是 從10到 0 (字首)
這個要注意了。
ps : 設置成負數比如 -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個的位置