En el post de hoy vamos a ver cómo dividir una cadena en pedazos si es que supera una máxima longitud. Por ejemplo, separar la string en JS si mide más de 5, y además de eso dividirla en fragmentos de N cantidad.
Vamos a ver cómo separar una cadena cada cierto número de caracteres y también cómo dividirla en trozos pequeños colocados en un arreglo donde se respete una cierta longitud.
Veamos el primer enfoque. Vamos a poner un carácter que será un separador de la cadena, de modo que estará presente cada N lugares donde N es la máxima longitud.
La función queda así:
const separarCadenaSiSuperaLongitud = (cadena, maximaLongitud, separador) => {
let resultado = "";
let indice = 0;
while (indice < cadena.length) {
const pedazo = cadena.substring(indice, indice + maximaLongitud);
indice += maximaLongitud;
resultado += pedazo;
if (indice < cadena.length) {
resultado += separador;
}
}
return resultado;
};
Recorremos la cadena y la vamos cortando desde un índice hasta ese índice sumado a la máxima longitud. Aquí estoy usando substring
para que sea portable a otros lenguajes, pero bien podrías usar substr y ahorrarte la suma de la línea 6.
La subcadena que resulta de dividir la cadena original la agrego al resultado y luego compruebo si no estoy en el final de la cadena para agregar el separador.
Para probar podemos hacer lo siguiente:
let cadena = "Hola mundo, soy una cadena. Me gusta programar en JavaScript desde parzibyte.me";
console.log("Original es: ");
console.log(cadena);
const maximaLongitud = 5;
const separador = "_";
const separada = separarCadenaSiSuperaLongitud(cadena, maximaLongitud, separador);
console.log("Separada es: ");
console.log(separada);
Con la siguiente salida:
Original es:
Hola mundo, soy una cadena. Me gusta programar en JavaScript desde parzibyte.me
Separada es:
Hola _mundo_, soy_ una _caden_a. Me_ gust_a pro_grama_r en _JavaS_cript_ desd_e par_zibyt_e.me
Como puedes ver, obtenemos la cadena separada cada N lugares según la máxima longitud que estamos permitiendo y el separador elegido.
Otro enfoque es el de cortar la cadena en pedazos de máximo N longitud y agregarlos a un arreglo, de modo que la cadena ahora estará separada cada N lugares pero no tendrá separador, sino que los bloques estarán en un arreglo. La función queda así:
const separarCadenaEnArregloSiSuperaLongitud = (cadena, maximaLongitud) => {
const resultado = [];
let indice = 0;
while (indice < cadena.length) {
const pedazo = cadena.substring(indice, indice + maximaLongitud);
indice += maximaLongitud;
resultado.push(pedazo);
}
return resultado;
};
Lo que hacemos es declarar un arreglo, luego recorremos la cadena, la vamos cortando y agregamos el pedazo al arreglo en la línea 7. Al final devolvemos el arreglo que tendrá la cadena separada según el parámetro de la máxima longitud.
Podemos probar con el siguiente ejemplo:
let cadena = "Hola mundo, soy una cadena. Me gusta programar en JavaScript desde parzibyte.me";
console.log("Original es: ");
console.log(cadena);
const maximaLongitud = 5;
const separadaEnArreglo = separarCadenaEnArregloSiSuperaLongitud(cadena, maximaLongitud);
console.log("Separada en arreglo es: ");
console.log(separadaEnArreglo);
La salida será el siguiente array:
Original es:
Hola mundo, soy una cadena. Me gusta programar en JavaScript desde parzibyte.me
Separada en arreglo es:
[
'Hola ', 'mundo', ', soy',
' una ', 'caden', 'a. Me',
' gust', 'a pro', 'grama',
'r en ', 'JavaS', 'cript',
' desd', 'e par', 'zibyt',
'e.me'
]
Y así es como se puede separar una cadena en trozos más pequeños respetando una máxima longitud. Obviamente puedes cambiar la longitud y el separador como tú prefieras. Por cierto, esto funciona en JS del lado del cliente y del servidor.
Para terminar te dejo con más tutoriales de JavaScript en mi blog.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.