In JavaScript, what is the difference between indexOf() and search()?
由于对javascript还比较陌生,我无法分辨何时使用这些脚本。
有人能帮我澄清一下吗?
如果需要正则表达式,请使用
搜索函数(这里有一个描述)采用一个正则表达式,它允许您与更复杂的模式、不区分大小写的字符串等匹配,而indexof(这里有一个描述)只与文本字符串匹配。但是,indexof还允许您指定开始索引。
我认为主要的区别是搜索接受正则表达式。
检查此参考:
- 搜索
- 索引
indexof()-它接受字符串文本或字符串对象,但不接受正则表达式。它还接受从零开始搜索的整数值,例如:
search()-接受字符串文本或字符串对象和正则表达式。但它不接受从中开始搜索的索引。
搜索发现它与正则表达式匹配,但没有偏移量。indexof使用文本进行匹配,但具有偏移量。
索引
搜索
indexof()和search()。
两者共同
i)返回第一次出现的搜索值
ii)如果找不到匹配项,返回-1
1
2
3let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
在indexof()中特殊
i)你可以给出开始搜索位置作为第二个参数。
1
2str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
- 搜索中的特殊项()
搜索值可以是正则表达式
1 2 | str.search('book') // 8 str.search(/book/i) // 0 ( /i =case-insensitive (Book == book) |
参考
没有regex,indexof和search之间没有实际的区别。
下面的示例提供了一个实时演示:
1 2 3 4 5 6 7 8 9 10 11 12 | 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; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <p id="demo">Without a regex, there is no practical difference between indexOf and search </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> |