0

pues eso cuando ejecuto codigo en javascript y tengo una cadena como por ejemplo :

 var variable="esto es una . cadena con punto".search(".");

Pues da 0, he buscado y al parecer search() devuelve 0 cuando no tiene parametros o no estan inicializados, cosa que no entiendo porque le estoy pasando explicitamente la cadena que tiene que buscar...

k1k4ss0
  • 659
  • 4
  • 12

2 Answers2

2

Esto se debe a que el método search no recibe una cadena, sino una expresión regular o una cadena para hacer una expresión regular, es decir, tu código es equivalente a

var variable = "esto es una . cadena con punto".search(".");
console.log(variable);
var variable1 = "esto es una . cadena con punto".search(new RegExp("."));
console.log(variable1);
var variable2 = "esto es una . cadena con punto".search(new RegExp(/./));
console.log(variable2);
var variable3 = "esto es una . cadena con punto".search(/./);
console.log(variable3);

el . en una expresión regular significa cualquier caracter, así que puedes corregir tu código escapando el punto para que no lo tome como cualquier caracter:

var variable = "esto es una . cadena con punto".search(new RegExp(/\./));
console.log(variable);
var variable1 = "esto es una . cadena con punto".search(new RegExp("\\."));
console.log(variable1);
var variable2 = "esto es una . cadena con punto".search("\\.");
console.log(variable2);
var variable3 = "esto es una . cadena con punto".search(/\./);
console.log(variable3);
Ruslan López
  • 10,060
  • 11
  • 35
  • 68
  • Hola muchas gracias, ya me imaginaba que "." se interpretaba como algun tipo de expresion o algo asi, como "\n", etc. Espero que esto ayude a otra gente tambien – k1k4ss0 Jan 06 '19 at 16:53
0

He encontrado una forma diferente de encontrar el indice o posicion del caracter ".", se puede utilizar:

   string.indexOf(".");

Te devolvera la posicion.

k1k4ss0
  • 659
  • 4
  • 12