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
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>
9条答案
按热度按时间irtuqstp1#
如果您的情况需要使用正则表达式,请使用
search()
方法,否则;indexOf()
方法性能更好。mklgxw1f2#
indexOf
用于普通子字符串,search
用于正则表达式。oxosxuxt3#
索引()和搜索()
*两者通用
i)返回第一个出现的搜索值
ii)如果没有找到匹配,则返回-1
*在indexOf()中特殊
i)您可以给予起始搜索位置作为第二个参数
*在search()中特殊
搜索值可以是正则表达式
reference
uajslkp64#
search函数(one description here)接受一个正则表达式,它允许你匹配更复杂的模式、不区分大小写的字符串等,而indexOf(one description here)只匹配一个文本字符串,但是indexOf也允许你指定一个开始索引。
gk7wooem5#
我认为主要的区别是搜索接受正则表达式。
检查此引用:
gv8xihay6#
IndexOf()-它接受字符串或字符串对象,但不接受正则表达式。它还接受从零开始的整数值作为搜索的起始值,例如:
1.“小象”索引(“e”);//给你4
1.“小象”的索引(“e”,5);//从第6个位置或第5个索引开始搜索时,返回6。
1.变量m= /e/;“小象”指数(m);//给出-1,因为它不接受正则表达式。
Search()-接受字符串常量或字符串对象以及正则表达式,但不接受索引作为搜索的起始。
t1qtbnec7#
搜索发现它与正则表达式匹配,但没有偏移量。IndexOf使用文本进行匹配,但有偏移量。
IndexOf
Search
f8rj6qna8#
除了已经提到的所有其他考虑因素外,indexOf的速度要快得多,如果你不需要做时髦的正则表达式,只是做一个简单的查找,那么就不要使用搜索。
这是一个显著的区别,只有在要使用正则表达式时才使用搜索。
如果有人感兴趣,我可以发布测试代码。
csbfibhn9#
如果没有regex,indexOf和search之间就没有实际区别。
下面的示例给出了一个活动的demo: