Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: TØtti en 26 Abril 2017, 14:27 pm



Título: Diferencia entre slice,substring y substr [javascript]
Publicado por: TØtti en 26 Abril 2017, 14:27 pm
Hola comunidad. Realmente no entiendo cual es la diferencia de esas tres funciones, que al parecer en la práctica funcionan igual (slice,substring,substr), pero lo dudo ya que por algo están. ¿Alguien me podría explicar?

Por cierto, el siguiente código no lo logro entender, yo sé para que sirve pero no como se ejecuta (tal vez por mi primera duda):

Código
  1. function reemplazarCadena(cadenaVieja, cadenaNueva, cadenaCompleta)
  2. {
  3. // Reemplaza cadenaVieja por cadenaNueva en cadenaCompleta
  4.  
  5.   for (var i = 0; i < cadenaCompleta.length; i++)
  6. {
  7.       if (cadenaCompleta.substring(i, i + cadenaVieja.length) == cadenaVieja)
  8. {
  9.  
  10.            cadenaCompleta =  cadenaCompleta.substring(0, i) + cadenaNueva + cadenaCompleta.substring(i + cadenaVieja.length, cadenaCompleta.length);
  11.       }
  12.   }
  13.   return cadenaCompleta;
  14. }
  15.  
  16.  
  17. //reemplazarCadena("Mundo", "Web", "Bravo Nuevo Mundo");

Gracias de antemano.



Título: Re: Diferencia entre slice,substring y substr [javascript]
Publicado por: engel lex en 26 Abril 2017, 14:34 pm
google te lleva a

https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/slice (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/slice)
https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substring (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substring)
https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substr (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substr)


Título: Re: Diferencia entre slice,substring y substr [javascript]
Publicado por: TØtti en 26 Abril 2017, 15:47 pm
google te lleva a

https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/slice (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/slice)
https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substring (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substring)
https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substr (https://developer.mozilla.org/es/docs/Web/javascript/Referencia/Objetos_globales/String/substr)

Hombre, si por algo encontré éste foro.

EL punto es que necesito otra explicación, a ver si algún buen samaritano se pasa.



Título: Re: Diferencia entre slice,substring y substr [javascript]
Publicado por: engel lex en 26 Abril 2017, 18:50 pm
extiende tu pregunta, que no entiendes de ellos? XD porque simplemente te van a repetir lo que ya dicen los documentos


Título: Re: Diferencia entre slice,substring y substr [javascript]
Publicado por: #!drvy en 26 Abril 2017, 21:09 pm
slice y substring funcionan de manera diferente internamente pero en la practica devuelven el mismo resultado con algunas excepciones bastante raras (navegadores diferentes).

La diferencia entre substring y substr es el segundo parámetro. En substring, es el index (o numero de carácter) sobre el que parar. En substr, el segundo parámetro es la longitud máxima de la cadena a devolver.

Dicho esto, lo recomendable de todas ellas es usar slice o substr.



Respecto a tu segunda duda... lo que hace es reemplazar una cadena por otra, dentro de un texto.

Linea 5: Por cada carácter de la cadena completa...
Linea 7: Si dicho carácter + los caracteres que siguen (durante la longitud de la cadenaVieja) son iguales a cadenaVieja...
Linea 10: CadenaCompleta es igual a cadenaCompleta hasta donde encontramos el primer carácter de cadenaVieja + cadenaNueva + cadenaCompleta desde donde encontramos el ultimo carácter de cadenaVieja.

Todo esto se basa en un index de caracteres dentro de cadenas de texto.

Supongamos que tienes la cadena: hola mundo
Los index serian respectivamente:


Código:
0 = h
1 = o
2 = l
3 = a
4 =
5 = m
6 = u
7 = n
8 = d
9 = o

Empieza desde el 0 porque todo en la informática empieza desde 0. En algunas ocasiones, un caracter puede equivaler a múltiples index dado que su codificación así lo require.. pero eso ya es otro tema.

Entonces, si yo con la anterior cadena, hago un slice:

Código
  1. var cadena = 'hola mundo';
  2. var primera = cadena.slice(0, 4);

Obtendré, "hola" dado que le estoy diciendo: Corta la cadena desde la posición 0 (primer carácter) hasta la posición 4 (recuerda, incluido el 0 (5))

De la misma forma, si hago cadena.slice(5, 10), obtendré "mundo" porque empiezo en el caracter 5 y termino en la posición (recuerda, incluido el 0) 10.

En cambio, con substr

Si hago cadena.substr(0, 4), obtendré "hola", y lo que le estaría indicando es: Corta la cadena desde la posición 0 hasta las próximas 4 posiciones como mucho.

El resultado aquí seria igual pero en el caso de la palabra mundo, no. Dado que si hago cadena.substr(5, 5) me devolverá "mundo" ya que le estoy diciendo que corte desde la posición 5 hasta los próximos 5 caracteres.


Saludos


Título: Re: Diferencia entre slice,substring y substr [javascript]
Publicado por: TØtti en 26 Abril 2017, 22:53 pm
Me tarde un buen rato en captar como se ejecutaba la función, pero entendí todo perfectamente. Gracias.