In JavaScript, was ist der Unterschied zwischen indexOf () und search ()?

stimmen
145

Als ziemlich neu in JavaScript, ich bin nicht in der Lage zu erkennen, wenn jeder von ihnen zu verwenden.

Kann jemand das für mich klären helfen?

Veröffentlicht am 09/12/2008 um 21:25
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
167

Wenn Sie einen regulären Ausdruck benötigen, verwenden search(). Andernfalls indexOf()wird schneller sein.

Beantwortet am 09/12/2008 um 21:29
quelle vom benutzer

stimmen
28

indexOf ist für Normalstrings, search können tun , reguläre Ausdrücke.

Beantwortet am 09/12/2008 um 21:28
quelle vom benutzer

stimmen
12

Die Suchfunktion ( eine Beschreibung hier ) nimmt einen regulären Ausdruck, die Sie gegen anspruchsvollere prasselt, Groß- und Kleinschreibung Strings übereinstimmen kann, etc., während indexOf ( eine Beschreibung hier ) einfach entspricht eine Zeichenkette. Allerdings ermöglicht indexOf Sie auch einen Anfang Index angeben.

Beantwortet am 09/12/2008 um 21:31
quelle vom benutzer

stimmen
7

Ich denke, die Hauptunterschied besteht darin, dass die Suche mit regulären Ausdrücken akzeptieren.

Überprüfen Sie diese Referenz:

Beantwortet am 09/12/2008 um 21:30
quelle vom benutzer

stimmen
3

IndexOf () - es akzeptiert Zeichenfolgenliterale oder String - Objekte aber nicht regulären Ausdrücke. Er akzeptiert auch einen Null-basierten Integer - Wert seine Suche aus, zum Beispiel zu starten:

  1. "Babyelephant" .indexOf ( "E"); // gibt Ihnen 4
  2. "Babyelephant" .indexOf ( "e", 5); // gibt Ihnen 6 als die Suche aus der 6. Position oder 5. Index beginnt.
  3. var m = / e /; "Babyelephant" .indexOf (m); // gibt -1, wie es funktioniert nicht reguläre Ausdrücke akzeptiert.

Search () - akzeptiert beide Stringliterale oder String-Objekte und reguläre Ausdrücke. Aber es nimmt keinen Index aus der Suche zu beginnen.

Beantwortet am 05/09/2016 um 14:20
quelle vom benutzer

stimmen
2

Suchen Sie findet es übereinstimmt mit einem regulären Ausdruck, hat aber keine Verschiebungen. IndexOf verwendet Literale zu entsprechen, hat aber einen Versatz.

Index von

Suche

Beantwortet am 09/12/2008 um 21:32
quelle vom benutzer

stimmen
0

Ohne einen regulären Ausdruck , gibt es keinen praktischen Unterschied zwischen indexOf und Suche .

Das folgende Beispiel gibt eine Live - 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>

Beantwortet am 15/12/2015 um 07:02
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more