Quiero mantener los saltos de línea después de hacer algo de lógica en mi valor de cadena para un elemento de área de texto. Digamos que tengo esta cadena de mi área de texto:
"Test Newline here" matriz: ["Test\nNewline", "here"]
¿Cómo puedo guardarlo para que sea así: ["Test", "\n", "Newline", "here"]
Mi código:
let bodyText = "Test Newline here" let bodyTextArray = bodyText.split(/ |\n|(?=\n)/g)Básicamente, lo que sucede es dividir y eliminar los espacios y "\n". usar la anticipación positiva no funciona, estaba intentando con la anticipación negativa sin éxito.
¿Algunas ideas?
Puedes combinarlos:
let bodyText = `Test Newline here` let bodyTextArray = bodyText.match(/^\n|\S+/gm) console.log(bodyTextArray)Detalles :
^\n - comienzo de una línea y una nueva línea| - o\S+ : uno o más caracteres que no sean espacios en blanco.Para admitir terminaciones de línea CRLF, LF o CR, use
/^(?:\r\n?|\n)|\S+/gm donde (?:\r\n?|\n) reemplazó a \n y coincide con un carácter CR y LF opcional, o simplemente con un carácter LF.
Necesitas esto
let bodyText = "Test Newline here" let bodyTextArray = bodyText.split(/( |\n)/) Si coloca la captura () alrededor de lo que está dividiendo, eso se agrega a la salida
Puede usar una división usando esta expresión regular:
/(\n)+|\s+/Código:
const input = `Test Newline here`; var arr = input.split(/(\n)+|\s+/); console.log(arr.filter(Boolean));Explicación:
/(\n)+|\s+/ divide la entrada en 1+ líneas nuevas mientras captura una sola línea nueva (para que \n esté disponible en la matriz de salida después de la división) o 1+ espacios en blanco.filter(Boolean) elimina las entradas vacías o indefinidas de la matriz