Estoy tratando de convertir una cadena como 'Some\nexample\nstring' en una matriz como ['Some', '\n', 'example', '\n', 'string']
Pero es una locura que tenga que hacer esto:
let words = text.replace('\n', ' \\n ').split(/\s/); words = words.map(it => { if (it === '\\n') return '\n' else return it }) // result: ['Some', '\n', 'example', '\n', 'string']Porque esto no funciona:
const words = text.replace('\n', ' \n ').split(/\s/); // result: ['Some', '', '', 'example', 'string']Ni esto:
const words = text.replace('\n', ' \\n ').split(/\s/); // result: ['Some', '\\n', 'example', 'string']Ni esto:
const words = text.replace('\n', ' \\\n ').split(/\s/); // result: ['Some', '\\', '', 'example', 'string']¿Lo que da?
Aquí hay un enfoque de match de cadenas. Alternativamente, podemos hacer coincidir grupos de caracteres con espacios en blanco o sin espacios en blanco.
var input = 'Some\nexample\nstring'; var parts = input.match(/\s+|\S+/g); console.log(parts);Si desea que el patrón dividido se incluya en el resultado, captúrelo, por ejemplo
console.log( 'Some\nexample\nstring'.split(/(\n)/) )