В чем разница между indexOf() и search()?

Являясь довольно новым для JavaScript, я не могу понять, когда использовать каждый из них.

Может кто-нибудь помочь прояснить это для меня?

Ответы

Ответ 1

Если вам требуется регулярное выражение, используйте search(). В противном случае indexOf() будет быстрее.

Ответ 2

indexOf для простых подстрок, search для регулярных выражений.

Ответ 3

Функция поиска (одно описание здесь) принимает регулярное выражение, которое позволяет вам сопоставлять более сложные паттерны, безразмерные строки, и т.д., в то время как indexOf (одно описание здесь) просто соответствует литеральной строке. Однако indexOf также позволяет указать начальный индекс.

Ответ 4

Я думаю, что основное отличие состоит в том, что поиск принимает регулярные выражения.

Проверьте эту ссылку:

Ответ 5

IndexOf() - он принимает строковые литералы или строковые объекты, но не регулярные выражения. Он также принимает нулевое целое значение, чтобы начать поиск, например:

  • "babyelephant".indexOf( "е" );//дает вам 4
  • "babyelephant".indexOf( "е", 5);//дает вам 6 в качестве поиска начинается с 6-й позиции или 5-го индекса.
  • var m =/e/; "Babyelephant".indexOf(м);//дает -1, поскольку он doesnt принимает регулярные выражения.

Search() - принимает как строковые литералы, так и строковые объекты и регулярные выражения. Но он не принимает индекс для начала поиска.

Ответ 6

Поиск находит, что он совпадает с регулярным выражением, но не имеет смещений. IndexOf использует литералы для соответствия, но имеет смещение.

IndexOf

Search

Ответ 7

indexOf() и search()

  • общий в обоих

    я) вернуть первое вхождение искомого значения

    ii) вернуть -1, если совпадение не найдено

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

  • специальный в indexOf()

    я) вы можете дать начальную позицию поиска в качестве второго аргумента

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

  • спец в поиске()

значение поиска может быть регулярным выражением

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

ссылка

Ответ 8

Без regex практической разницы между indexOf и search.

Ниже приведен пример live :

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>