Jako że jestem całkiem nowy w JavaScript, nie jestem w stanie określić, kiedy użyć każdego z nich.
Czy ktoś może mi to wyjaśnić?
javascript
string
Colin Brock
źródło
źródło
search
oceni ciąg znaków do wyrażenia regularnego, nawet jeśli nie chcesz."hello.".search(".")
- zwraca 0, a nie 5, ponieważ.
jest to token wyrażenia regularnego dla „dowolnej postaci”indexOf
jest dla zwykłych podciągów,search
jest dla wyrażeń regularnych.źródło
Funkcja wyszukiwania ( tutaj jeden opis ) przyjmuje wyrażenie regularne, które pozwala dopasowywać bardziej wyrafinowane wzorce, ciągi znaków bez rozróżniania wielkości liter itp., Podczas gdy indexOf ( jeden opis tutaj ) po prostu dopasowuje ciąg literału. Jednak indexOf pozwala również określić indeks początkowy.
źródło
Myślę, że główna różnica polega na tym, że wyszukiwanie akceptuje wyrażenia regularne.
Sprawdź to odniesienie:
źródło
IndexOf () - przyjmuje literały łańcuchowe lub obiekty łańcuchowe, ale nie wyrażenia regularne. Akceptuje również zerową wartość całkowitą, aby rozpocząć wyszukiwanie, np .:
Search () - akceptuje zarówno literały łańcuchowe, jak i obiekty łańcuchowe i wyrażenia regularne. Ale nie akceptuje indeksu, od którego można rozpocząć wyszukiwanie.
źródło
"baby/e/lephant".indexOf(m);
?indexOf () i search ()
powszechne w obu
i) zwraca pierwsze wystąpienie szukanej wartości
ii) zwraca -1, jeśli nie znaleziono dopasowania
special in indexOf ()
i) możesz podać początkową pozycję wyszukiwania jako drugi argument
szukana wartość może być wyrażeniem regularnym
odniesienie
źródło
Wyszukiwarka znajduje dopasowanie do wyrażenia regularnego, ale nie ma przesunięć. IndexOf używa literałów do dopasowania, ale ma przesunięcie.
Indeks
Szukaj
źródło
Bez wyrażenia regularnego nie ma praktycznej różnicy między indexOf a wyszukiwaniem .
Poniższy przykład przedstawia demo na żywo :
źródło
search
konwertuje ciąg znaków naRegExp
, więc na przykładstr.search("d........e");
będzie również pasował do znaku 39.