ruby .split ('\ n') no se divide en la nueva línea

82

¿Por qué esta cadena no se divide en cada "\ n"? (RUBÍ)

"ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t".split('\n')
>> ["ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t"]
usuario2012677
fuente

Respuestas:

172

Necesitas .split("\n"). La interpolación de cadenas es necesaria para interpretar correctamente la nueva línea, y las comillas dobles son una forma de hacerlo.

Mori
fuente
39

En Ruby, las comillas simples alrededor de una cadena significan que los caracteres de escape no se interpretan. A diferencia de C, donde las comillas simples denotan un solo carácter. En este caso '\n'es realmente equivalente a"\\n" .

Entonces, si desea dividir \n, debe cambiar su código para usar comillas dobles.

.split("\n")

jbr
fuente
22

Ruby tiene los métodos String#each_lineyString#lines

devuelve una enumeración: http://www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

devuelve una matriz: http://www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

No lo probé contra su escenario, pero apuesto a que funcionará mejor que elegir manualmente los caracteres de nueva línea.

23en casa
fuente
Pero tenga en cuenta que #linesno eliminará el carácter de nueva línea, mientras que #splitlo hará: "a\nb".lines => ["a\n", "b"]while"a\nb".split("\n") => ["a", "b"]
tanius
Además, para archivos leídos en modo texto (el predeterminado), las secuencias de nueva línea se traducen a "\n"( ver ). Así que no es necesario elegirlos manualmente. Úselo en "\n"todas las plataformas.
tanius
9

O una expresión regular

.split(/\n/)
Mark Swardstrom
fuente
3

No puede usar comillas simples para esto:

"ADVERTISING [7310]\n\t\tIRS NUMBER:\t\t\t\t061340408\n\t\tSTATE OF INCORPORATION:\t\t\tDE\n\t\tFISCAL YEAR END:\t\t\t0331\n\n\tFILING VALUES:\n\t\tFORM TYPE:\t\t10-Q\n\t\tSEC ACT:\t\t1934 Act\n\t".split("\n")
fotanus
fuente