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

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.


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


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.


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


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")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.