Siendo bastante nuevo en JavaScript, no puedo discernir cuándo usar cada uno de estos.
¿Alguien puede ayudar a aclarar esto para mí?
javascript
string
Colin Brock
fuente
fuente
search
evaluará una cadena en una expresión regular, incluso si no lo desea."hello.".search(".")
, devuelve 0, no 5 porque.
es el token regex para "cualquier personaje"indexOf
es para subcadenas simples,search
es para expresiones regulares.fuente
La función de búsqueda ( una descripción aquí ) toma una expresión regular, que le permite comparar con patrones más sofisticados, cadenas que no distinguen entre mayúsculas y minúsculas, etc., mientras que indexOf ( una descripción aquí ) simplemente coincide con una cadena literal. Sin embargo, indexOf también le permite especificar un índice inicial.
fuente
Creo que la principal diferencia es que la búsqueda acepta expresiones regulares.
Verifique esta referencia:
fuente
IndexOf (): acepta literales de cadena u objetos de cadena pero no expresiones regulares. También acepta un valor entero basado en cero para comenzar su búsqueda, por ejemplo:
Search (): acepta tanto literales de cadena como objetos de cadena y expresiones regulares. Pero no acepta un índice para comenzar la búsqueda.
fuente
"baby/e/lephant".indexOf(m);
?indexOf () y search ()
común en ambos
i) devuelve la primera aparición del valor buscado
ii) devuelve -1 si no se encuentra coincidencia
especial en indexOf ()
i) puede dar la posición de búsqueda inicial como segundo argumento
el valor de búsqueda puede ser una expresión regular
referencia
fuente
La búsqueda encuentra coincidencias con una expresión regular, pero no tiene compensaciones. IndexOf usa literales para hacer coincidir, pero tiene un desplazamiento.
Índice de
Buscar
fuente
Sin una expresión regular , no hay diferencia práctica entre indexOf y search .
El siguiente ejemplo ofrece una demostración en vivo :
fuente
search
convierte una cadena en unRegExp
, por ejemplo,str.search("d........e");
también coincidirá con el carácter 39.