javascript indexOf()和search()有什么区别?

5tmbdcev  于 2023-01-11  发布在  Java
关注(0)|答案(9)|浏览(182)

作为JavaScript的新手,我无法辨别何时使用其中的每一个。
有人能帮我澄清一下吗?

irtuqstp

irtuqstp1#

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

mklgxw1f

mklgxw1f2#

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

oxosxuxt

oxosxuxt3#

索引()和搜索()
*两者通用

i)返回第一个出现的搜索值
ii)如果没有找到匹配,则返回-1

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

*在indexOf()中特殊

i)您可以给予起始搜索位置作为第二个参数

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

*在search()中特殊

搜索值可以是正则表达式

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

reference

uajslkp6

uajslkp64#

search函数(one description here)接受一个正则表达式,它允许你匹配更复杂的模式、不区分大小写的字符串等,而indexOf(one description here)只匹配一个文本字符串,但是indexOf也允许你指定一个开始索引。

gk7wooem

gk7wooem5#

我认为主要的区别是搜索接受正则表达式。
检查此引用:

gv8xihay

gv8xihay6#

IndexOf()-它接受字符串或字符串对象,但不接受正则表达式。它还接受从零开始的整数值作为搜索的起始值,例如:
1.“小象”索引(“e”);//给你4
1.“小象”的索引(“e”,5);//从第6个位置或第5个索引开始搜索时,返回6。
1.变量m= /e/;“小象”指数(m);//给出-1,因为它不接受正则表达式。
Search()-接受字符串常量或字符串对象以及正则表达式,但不接受索引作为搜索的起始。

t1qtbnec

t1qtbnec7#

搜索发现它与正则表达式匹配,但没有偏移量。IndexOf使用文本进行匹配,但有偏移量。
IndexOf
Search

f8rj6qna

f8rj6qna8#

除了已经提到的所有其他考虑因素外,indexOf的速度要快得多,如果你不需要做时髦的正则表达式,只是做一个简单的查找,那么就不要使用搜索。

Starting...
  IndexOf test - loop count 10000000
  IndexOf test end - duration: 4.600000023841858ms
  Search test - loop count 10000000
  Search test end - duration: 1221.6999999284744ms
All Done

这是一个显著的区别,只有在要使用正则表达式时才使用搜索。
如果有人感兴趣,我可以发布测试代码。

csbfibhn

csbfibhn9#

如果没有regexindexOfsearch之间就没有实际区别。
下面的示例给出了一个活动的demo

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>

相关问题