¿Cómo en el nodo dividir la cadena por nueva línea ('\ n')? Tengo una cadena simple como var a = "test.js\nagain.js"
y necesito obtener ["test.js", "again.js"]
. Lo intenté
a.split("\n");
a.split("\\n");
a.split("\r\n");
a.split("\r");
pero ninguno de los anteriores no funciona.
javascript
node.js
PaolaJ.
fuente
fuente
split()
no modifica la cadena original.Respuestas:
Intenta dividir en una expresión regular como
/\r?\n/
para ser utilizable por los sistemas Windows y UNIX.fuente
split(/[\r\n]+/)
Si el archivo es nativo de su sistema (ciertamente no hay garantías de eso), entonces Node puede ayudarlo:
Sin embargo, esto suele ser más útil para construir cadenas de salida desde Node, para la portabilidad de la plataforma.
fuente
Parece que regex
/\r\n|\r|\n/
maneja las terminaciones de línea CR, LF y CRLF, sus secuencias mixtas, y mantiene todas las líneas vacías en el medio. ¡Trata eso!Debería obtener estos arreglos como resultado:
También puede enseñarle a esa expresión regular a reconocer otros terminadores de línea Unicode legítimos agregando
|\xHH
o|\uHHHH
partes, dondeH
están los dígitos hexadecimales del punto de código adicional del carácter del terminador (como se ve en el artículo de Wikipedia comoU+HHHH
).fuente
Tenga en cuenta que
split
ting devuelve la nueva matriz, en lugar de solo asignarla a la cadena original. Necesita almacenarlo explícitamente en una variable.fuente
Se puede lograr una solución que funcione con todas las terminaciones de línea posibles, incluidas las mixtas y mantener las líneas vacías utilizando dos reemplazos y una división de la siguiente manera
algún código para probarlo
y la salida
fuente
El primero debería funcionar:
fuente
Hice un
eol
módulo para trabajar con terminaciones de línea en nodos o navegadores. Tiene un método dividido comofuente