Da JavaScript relativ neu ist, kann ich nicht erkennen, wann ich diese verwenden soll.In JavaScript, was ist der Unterschied zwischen indexOf() und search()?
Kann mir jemand helfen, das für mich zu klären?
Da JavaScript relativ neu ist, kann ich nicht erkennen, wann ich diese verwenden soll.In JavaScript, was ist der Unterschied zwischen indexOf() und search()?
Kann mir jemand helfen, das für mich zu klären?
Wenn Sie einen regulären Ausdruck benötigen, verwenden search()
. Sonst wird indexOf()
schneller sein.
Die Suchfunktion (one description here) nimmt einen regulären Ausdruck, die Sie gegen anspruchsvollere prasselt, Groß- und Kleinschreibung Strings übereinstimmen erlaubt usw., während indexOf (one description here) einfach eine literale Zeichenfolge abgleicht. Mit indexOf können Sie jedoch auch einen Anfangsindex angeben.
Suche findet es mit einem regulären Ausdruck übereinstimmt, aber kein Offsets hat. IndexOf verwendet Literale zur Übereinstimmung, hat aber einen Offset.
Suche * gibt * einen Offset zurück. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search – rvighne
Ohne regex gibt es keinen praktischen Unterschied zwischen indexOf und search.
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>
IndexOf() - es Stringliterale oder String-Objekte aber nicht reguläre Ausdrücke akzeptiert. Es akzeptiert auch einen Null-basierten ganzzahligen Wert, um seine Suche zu starten, z. B .:
Search() - akzeptiert sowohl String-Literale oder String-Objekte als auch reguläre Ausdrücke. Es akzeptiert jedoch keinen Index, mit dem die Suche gestartet werden kann.
Was gibt es für "baby/e/lephant" .indexOf (m); '? – RamenChef
good one .. es wird zurückkehren 4..because/e/string ist vorhanden..aber wenn Sie eine Regex "e" finden wollen, werden Sie nicht das gewünschte Ergebnis erhalten. UMM vielleicht sollte ich meine Antwort auf indexOf ändern() versucht, die Regex als String-Literal und nicht als Regex zu finden. – bablue
ein Hinweis auf diesen Anspruch? – robisrob
Auch "Suche" wird eine Zeichenfolge in eine Regex auswerten, auch wenn Sie nicht möchten. – cregox
@ cregox's Kommentar ist wichtig - probiere '" hallo. ". Search (". ")' - es gibt 0 zurück, nicht 5 wegen '.'ist das Regex-Token für" irgendein Zeichen " – JoeRocc