Convertir String en array JS

publicado por: Anonymous

Tengo el siguiente string:

var str = 
  "### Titulo 1
     #### Subtitulo 1
     #### Subtitulo 2
     #### Subtitulo 3
   ### Titulo 2
     #### Subtitulo 1
     #### Subtitulo 2"

Habría alguna forma de a partir de este String generar un array con este contenido:

var arr = [
  "### Titulo 1
     #### Subtitulo 1
     #### Subtitulo 2
     #### Subtitulo 3",
  "### Titulo 2
     #### Subtitulo 1
     #### Subtitulo 2"
]

solución

Una de las formas que se me ocurren para realizar la tarea es construir tu propio analizador.

Se puede separar la cadena usando como separador el carácter de Línea Nueva (n) en conjunto con el carácter de numeral o almohadilla (#), pero eso quitaría o eliminaría el primer carácter # de la linea siguiente que queremos separar.

Para solventarlo usaremos el método map() del tipo Array, para añadir un carácter # a la línea que lo perderá por hacer el uso de split().

Por ejemplo:

_x000D_

_x000D_

const cadena =
`### Titulo 1
  ### Subtitulo 1
  ### Subtitulo 2
  ### Subtitulo 3
### Titulo 2
  ### Subtitulo 1
  ### Subtitulo 2
  ### Subtitulo 3
### Titulo 3
  ### Subtitulo 1
  ### Subtitulo 2
  ### Subtitulo 3`;

let array = cadena.split(`n#`).map((item, index) => {
  if(!index) { // si el índice es 0, se retorna el elemento sin alterar
    return item;
  }
  return `#${item}`
});
array.forEach(item => {
  console.log(item);
});

_x000D_

.as-console-wrapper {
  min-height: 100%;
  top: 0;
}

_x000D_

_x000D_

_x000D_

Esta solución aplica para cualquier cadena que tenga la estructura aportada en la pregunta.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *