1. 程式人生 > >Js中 字符串函數indexOf與search的區別

Js中 字符串函數indexOf與search的區別

情況 instr 區別 blog indexof() c語言 有一個 strstr 為什麽

轉載自 http://blog.sina.com.cn/s/blog_ae40e7350102wnrs.html

IndexOf()方法是用來判斷一個字符串是否存在於一個更長的字符串中。從長字符串左端到右端來搜索,如果存在該子字符串就返回它所處的位置(即索引)。如果在被搜索的字符串沒有找到要查找的字符串返回-1。註意,這裏的位置應當填寫索引值。所有的字符串索引都是從零開始,第一個字符的位置就是0,終點位置就是字符串的長度減去1。

該方法等價於C語言中的strstr函數及Visual Basic語言中的inStr函數。這個方法也有一個相應的函數,即lastIndexOf(),從長字符串的右端搜索。

那麽問題來了,search()方法也是同樣返回目標自字符串索引值的。indexOf()和search()有什麽區別呢?為什麽時候該使用它,什麽時候該使用search()這個方法呢?

首先要明確search()的參數必須是正則表達式,而indexOf()的參數只是普通字符串。indexOf()是比search()更加底層的方法。

如果只是對一個具體字符串來查找,那麽使用indexOf()的系統資源消耗更小,效率更高;如果是查找具有某些特征的字符串(比如查找以a開頭,後面是數字的字符串),那麽indexOf()就無能為力,必須要使用正則表達式和search()方法了。

很多時候用indexOf()不是為了真的想知道子字符串的位置,而是想知道長字符串中沒有包含這個子字符串。如果返回索引值是-1,那麽說明沒有:不等於-1,那麽就是有。

所以一般情況下indexOf比search更省資源。

Js中 字符串函數indexOf與search的區別