una - split javascript ejemplo




¿Cómo en nodo dividir cadena por nueva línea('\ n')? (4)

El primero debería funcionar:

> "a\nb".split("\n");
[ 'a', 'b' ]
> var a = "test.js\nagain.js"
undefined
> a.split("\n");
[ 'test.js', 'again.js' ]

¿Cómo en nodo dividir 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.


Hice un módulo eol para trabajar con terminaciones de línea en nodo o navegadores. Tiene un método dividido como

var lines = eol.split(text)

Si el archivo es nativo de su sistema (ciertamente no hay garantías de eso), entonces Node puede ayudarlo:

var os = require('os');

a.split(os.EOL);

Sin embargo, esto suele ser más útil para construir cadenas de salida desde Nodo, para la portabilidad de la plataforma.


También se puede lograr una solución que funcione con todos los finales de línea posibles, incluidos los mixtos y manteniendo las líneas vacías, usando dos reemplazos y una división de la siguiente manera

text.replace(/\r\n/g, "\r").replace(/\n/g, "\r").split(/\r/);

algún código para probarlo

  var CR = "\x0D";  //   \r
  var LF = "\x0A";  //   \n

  var mixedfile = "00" + CR + LF +            // 1 x win
                  "01" + LF +                 // 1 x linux
                  "02" + CR +                 // 1 x old mac
                  "03" + CR + CR +            // 2 x old mac
                  "05" + LF + LF +            // 2 x linux
                  "07" + CR + LF + CR + LF +  // 2 x win
                  "09";

  function showarr (desc, arr)
  {
     console.log ("// ----- " + desc);
     for (var ii in arr)
        console.log (ii + ") [" + arr[ii] +  "] (len = " + arr[ii].length + ")");
  }

  showarr ("using 2 replace + 1 split", 
           mixedfile.replace(/\r\n/g, "\r").replace(/\n/g, "\r").split(/\r/));

y la salida

  // ----- using 2 replace + 1 split
  0) [00] (len = 2)
  1) [01] (len = 2)
  2) [02] (len = 2)
  3) [03] (len = 2)
  4) [] (len = 0)
  5) [05] (len = 2)
  6) [] (len = 0)
  7) [07] (len = 2)
  8) [] (len = 0)
  9) [09] (len = 2)




node.js