Da ich in JavaScript ziemlich neu bin, kann ich nicht erkennen, wann ich diese verwenden soll.
Kann mir jemand helfen, das zu klären?
Da ich in JavaScript ziemlich neu bin, kann ich nicht erkennen, wann ich diese verwenden soll.
Kann mir jemand helfen, das zu klären?
Antworten:
Wenn Sie einen regulären Ausdruck benötigen, verwenden Sie search()
. Sonst indexOf()
geht es schneller.
search
wird eine Zeichenfolge in einen regulären Ausdruck ausgewertet, auch wenn Sie dies nicht möchten.
Die Suchfunktion ( eine Beschreibung hier ) verwendet einen regulären Ausdruck, mit dem Sie mit komplexeren Mustern, Zeichenfolgen ohne Berücksichtigung der Groß- und Kleinschreibung usw. übereinstimmen können, während indexOf ( eine Beschreibung hier ) einfach mit einer Literalzeichenfolge übereinstimmt. Mit indexOf können Sie jedoch auch einen Anfangsindex angeben.
IndexOf () - akzeptiert Zeichenfolgenliterale oder Zeichenfolgenobjekte, jedoch keine regulären Ausdrücke. Es akzeptiert auch einen auf Null basierenden ganzzahligen Wert, von dem aus die Suche gestartet werden soll, z.
Search () - akzeptiert sowohl String-Literale oder String-Objekte als auch reguläre Ausdrücke. Es wird jedoch kein Index akzeptiert, von dem aus die Suche gestartet werden kann.
"baby/e/lephant".indexOf(m);
?
indexOf () und search ()
gemeinsam in beiden
i) das erste Auftreten des gesuchten Werts zurückgeben
ii) Rückgabe -1, wenn keine Übereinstimmung gefunden wurde
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
speziell in indexOf ()
i) Sie können die Startsuchposition als zweites Argument angeben
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
Der Suchwert kann ein regulärer Ausdruck sein
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Die Suche findet Übereinstimmungen mit einem regulären Ausdruck, hat jedoch keine Offsets. IndexOf verwendet übereinstimmende Literale, hat jedoch einen Offset.
Ohne Regex gibt es keinen praktischen Unterschied zwischen indexOf und search .
Das folgende Beispiel zeigt 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>
search
Konvertiert eine Zeichenfolge in eine RegExp
, so dass sie beispielsweise str.search("d........e");
auch mit Zeichen 39