Cómo funciona substring, substr y slice en JavaScript?
Te explico las diferencias entre substring
, substr
y slice
de JavaScript con strings
Prólogo
Quitar carácteres de un string es algo que necesitarás casi seguro en cualquier desarrollo, ya sea por simple tratamiento de datos o por modificar palabras como por ejemplo, para quitar la última barra de una dirección como www.kuworking.com/
Aquí te describo tres métodos: substring
, substr
y slice
Substring
Nos devuelve un nuevo string (por lo tanto respeta la inmutabilidad) que contiene el segmento que le especificamos
const str = 'https://www.kuworking.com/'
let new_str
new_str = str.substring(8, 11) // -> www
new_str = str.substring(8) // -> www.kuworking.com/
new_str = str.substring(8, str.length - 1) // -> www.kuworking.com
new_str = str.substring(0, str.length - 1) // -> https://www.kuworking.com
new_str = str.substring(0, -1) // no funciona, no acepta números negativos
Substr
En el caso de substr
tienes lo mismo que substring
, pero mientras antes especificábamos inicio y fin, aquí especificamos inicio y número de carácteres a incluir
const str = 'https://www.kuworking.com/'
let new_str
new_str = str.substr(8, 3) // -> www
new_str = str.substr(8) // -> www.kuworking.com/
new_str = str.substr(8, 17) // -> www.kuworking.com
new_str = str.substr(0, 25) // -> https://www.kuworking.com
new_str = str.substr(0, -1) // no funciona, no acepta números negativos
Depende de qué quieras hacer, una opción nos simplificará la vida bastante más que la otra
En este caso, escoger substr sería complicarse sin motivo
Slice
Slice
viene a ser lo mismo que substring
con la diferencia de que aquí sí se aceptan valores negativos
const str = 'https://www.kuworking.com/'
let new_str
new_str = str.slice(8, 11) // -> www
new_str = str.slice(8) // -> www.kuworking.com/
new_str = str.slice(8, str.length-1) // -> www.kuworking.com
new_str = str.slice(0, str.length-1) // -> https://www.kuworking.com
new_str = str.slice(0, -1) // -> https://www.kuworking.com
new_str = str.slice(-4) // -> com/
Y lo cierto es que lo más habitual es utilizar slice
siempre
Slice para arrays
Y es que slice
(a diferencia de los 2 anteriores) también existe para arrays, donde se comporta de modo homólogo, esto es, extrayendo los elementos especificados en la función
Si te interesa, puedes leerlo en la entrada slice
vs splice
Resumen
Entre substring
, substr
y slice
la redundancia es alta y aunque hay algunas diferencias sutiles (que no he explicado, y que tampoco son muy relevantes y aquí no aplican) parece que slice
reuniría la mayor versatilidad
De cualquier modo los 3 métodos están en nuestro arsenal de funciones, así que libre albedrío
Lista de correo: escribo algo de tanto en cuanto