В чем разница между indexOf () и search () в JavaScript? - PullRequest
168 голосов
/ 09 декабря 2008

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

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

Ответы [ 8 ]

192 голосов
/ 09 декабря 2008

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

31 голосов
/ 09 декабря 2008

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

14 голосов
/ 09 декабря 2008

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

7 голосов
/ 09 декабря 2008

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

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

4 голосов
/ 05 сентября 2016

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

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

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

2 голосов
/ 09 декабря 2008

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

IndexOf

Поиск

1 голос
/ 22 апреля 2019

indexOf () и search ()

  • общее в обоих

    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) 
    

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

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

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

ссылка

0 голосов
/ 15 декабря 2015

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

нет.

Приведенный ниже пример дает живое демо :

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...