ruby .split ('\ n') teilt sich nicht in einer neuen Zeile

82

Warum wird diese Zeichenfolge nicht bei jedem "\ n" aufgeteilt? (RUBIN)

"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"]
user2012677
quelle

Antworten:

172

Du brauchst .split("\n"). Eine Zeichenfolgeninterpolation ist erforderlich, um die neue Zeile richtig zu interpretieren, und doppelte Anführungszeichen sind eine Möglichkeit, dies zu tun.

Mori
quelle
39

In Ruby bedeuten einfache Anführungszeichen um eine Zeichenfolge, dass Escapezeichen nicht interpretiert werden. Anders als in C, wo einfache Anführungszeichen ein einzelnes Zeichen bezeichnen. In diesem Fall '\n'ist eigentlich gleichbedeutend mit "\\n".

Wenn Sie also aufteilen möchten, \nmüssen Sie Ihren Code ändern, um doppelte Anführungszeichen zu verwenden.

.split("\n")

jbr
quelle
22

Ruby hat die Methoden String#each_lineundString#lines

gibt eine Aufzählung zurück: http://www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

Gibt ein Array zurück: http://www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

Ich habe es nicht anhand Ihres Szenarios getestet, aber ich wette, es funktioniert besser als die manuelle Auswahl der Zeilenumbrüche.

23inhouse
quelle
Zu beachten ist jedoch, dass #linesdas Zeilenumbruchzeichen nicht entfernt wird, während #splitdies "a\nb".lines => ["a\n", "b"]"a\nb".split("\n") => ["a", "b"]
geschieht
Bei Dateien, die im Textmodus (Standardeinstellung) gelesen werden, werden Zeilenumbruchsequenzen in "\n"( siehe ) übersetzt. Sie müssen sie also nicht manuell auswählen. Verwenden Sie auf "\n"allen Plattformen.
Tanius
8

Oder ein regulärer Ausdruck

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

Sie können hierfür keine einfachen Anführungszeichen verwenden:

"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
quelle