Essendo abbastanza nuovo in JavaScript, non sono in grado di discernere quando utilizzare ciascuno di questi.
Qualcuno può aiutarmi a chiarire questo per me?
Essendo abbastanza nuovo in JavaScript, non sono in grado di discernere quando utilizzare ciascuno di questi.
Qualcuno può aiutarmi a chiarire questo per me?
Risposte:
Se hai bisogno di un'espressione regolare, usa search()
. Altrimenti, indexOf()
sarà più veloce.
search
valuterà una stringa in una regex anche se non vuoi.
La funzione di ricerca ( una descrizione qui ) assume un'espressione regolare, che ti consente di confrontarti con schemi più sofisticati, stringhe senza distinzione tra maiuscole e minuscole, ecc., Mentre indexOf ( una descrizione qui ) corrisponde semplicemente a una stringa letterale. Tuttavia, indexOf consente anche di specificare un indice iniziale.
IndexOf () - accetta valori letterali di stringa o oggetti stringa ma non espressioni regolari. Accetta anche un valore intero in base zero da cui iniziare la ricerca, ad esempio:
Cerca (): accetta sia valori letterali stringa che oggetti stringa ed espressioni regolari. Ma non accetta un indice da cui iniziare la ricerca.
"baby/e/lephant".indexOf(m);
?
indexOf () e search ()
comune in entrambi
i) restituisce la prima occorrenza del valore cercato
ii) restituisce -1 se non viene trovata alcuna corrispondenza
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
speciale in indexOf ()
i) puoi dare la posizione di ricerca iniziale come secondo argomento
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
il valore di ricerca può essere espressione regolare
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Senza regex , non vi è alcuna differenza pratica tra indexOf e la ricerca .
L'esempio seguente mostra una demo 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>
search
converte una stringa in a RegExp
, quindi ad esempio, str.search("d........e");
corrisponderà anche al carattere 39.