indexOf()和search()的区别是什么?

作为JavaScript的新手,我不知道什么时候使用它们。

有人能帮我解释一下吗?

81077 次浏览

indexOf用于普通子字符串,search用于正则表达式。

如果您的情况需要使用正则表达式,则使用search()方法,否则;indexOf()方法性能更好。

我认为主要的区别是搜索接受正则表达式。

检查一下参考资料:

搜索函数(这里有一个描述)接受一个正则表达式,它允许你匹配更复杂的模式,不区分大小写的字符串等,而indexOf (这里有一个描述)只是匹配一个文字字符串。但是,indexOf还允许指定开始索引。

搜索发现它与正则表达式匹配,但没有偏移量。IndexOf使用字面量进行匹配,但有一个偏移量。

IndexOf

搜索 .

如果没有正则表达式indexOf搜索之间就没有实际的区别。

下面的例子给出了一个活动的演示:

.
function FromSearch() {


var str = document.getElementById("demo").innerText;
var n = str.search("difference");
document.getElementById("Location").innerHTML = n;
}


function FromindexOf() {
var str = document.getElementById("demo").innerText;
var n = str.indexOf("difference");
document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>


<button onclick="FromSearch()">From search</button>


<button onclick="FromindexOf()">From indexOf</button>


<p>Location of difference in the above sentence is:</p>


<mark id="Location"></mark>

IndexOf() -它接受字符串字面量或字符串对象,但不接受正则表达式。它还接受一个从零开始的整数值来开始搜索,例如:

  1. “babyelephant .indexOf(“e”);//得到4
  2. <李> " babyelephant " .indexOf(“e”,5);//搜索结果为6 从第6个位置或第5个索引开始
  3. var m= /e/;“babyelephant .indexOf (m);//给出-1,因为它没有
  4. .接受正则表达式

Search() -接受字符串字面量或字符串对象和正则表达式。但是它不接受开始搜索的索引。

indexOf()和search()

  • < p > 两者都有

    I)返回第一个出现的搜索值

    Ii)如果没有找到匹配则返回-1

    let str='Book is booked for delivery'
    str.indexOf('b')   // returns position 8
    str.search('b')    // returns position 8
    

  • special in indexOf()

    i) you can give starting search position as a second argument

    str.indexOf('k')   // 3
    str.indexOf('k',4) // 11 (it start search from 4th position)
    

  • special in search()

search value can be regular expression

str.search('book') // 8
str.search(/book/i)  // 0   ( /i =case-insensitive   (Book == book)

reference