Copiar parte de una cadena
Estos métodos permiten crear una cadena copiando parte de la cadena referencia
- substr(ini, num) copia un número determinado de elementos de una cadena
- substring(i1 , i2) copia entre dos indices de de una cadena
- slice(i,f) copia desde el primer arguemntode una cadena
Todos estos métodos copian toda o parte de la cadena sin modificarla, devuelven una cadena nueva.
Pueden usar dos argumentos pero
si no usan ninguno: copian toda la cadena
si solo usan uno copian desde ese indice hasta el final de la cadena
El primer método substr(ini, num) copia tantos elementos como diga el segundo argumento comenzando por el índice que diga el primer argumento.
Si se piden más elementos de los que pueda copiar o no se indica el número de elementos copia hasta el final de la cadena.
El primer argumento puede ser negativo, significa que empieza a contar desde el final de la cadena. el último elemento sería -1, el penúltimo sería -2...
var letras = "ABCDEFGHIJKLMN";
var parte;
parte = letras.substr(3, 5)
console.log( parte ); //"DEFGH"
parte = letras.substr(-3)
console.log( parte ); //"LMN"
El método substring(i, f) usa dos argumentos enteros positivos para señalar donde empieza la copia y donde termina, el límite final queda fuera de la copia. No importa el orden: la copia comienza en el argumento más pequeño y finaliza en el más grande.
var letras = "ABCDEFGHIJKLMN";
var parte;
parte = letras.substring(3, 6)
console.log( parte ); //"DEF"
parte = letras.substring(6,3)
console.log( parte ); //"DEF"
Por su parte el método slice(org, fin) es prácticamente igual que substring, en este caso el orden de los argumentos se interpretan por orden: el primero es el inicio de la copia y el segundo es el indice final, quedando fuera de la copia, si no se usa se copia hasta el final de la cadena.
Además puede usar argumentos negativos, en este caso se empieza a contar todo desde el final de la cadena. El último carácter es -1, pero la copia se sigue haciendo en orden izquierda derecha, es decir, el segundo argumento debe estar más cerca del final que el primero.
var digitos = "0123456789ABCDEF";
var parte;
parte = digitos.slice(3, 8)
console.log( parte ); //"34567"
parte = digitos.slice(-5, -2)
console.log( parte ); //"BCD"