web-dev-qa-db-fra.com

ruby .split ('\ n') ne se divise pas sur la nouvelle ligne

Pourquoi cette chaîne ne se sépare-t-elle pas sur chaque "\ n"? (Rubis)

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

Vous avez besoin de .split("\n"). Une interpolation de chaîne est nécessaire pour interpréter correctement la nouvelle ligne, et les guillemets doubles sont un moyen de le faire.

152
Mori

Dans Ruby guillemets simples autour d'une chaîne signifie que les caractères d'échappement ne sont pas interprétés. Contrairement à C, les guillemets simples désignent un seul caractère. Dans ce cas, '\n' Est en réalité équivalent à "\\n".

Donc, si vous voulez diviser sur \n, Vous devez changer votre code pour utiliser des guillemets doubles.

.split("\n")

37
jbr

Ruby a les méthodes String#each_line et String#lines

retourne un enum: http://www.Ruby-doc.org/core-1.9.3/String.html#method-i-each_line

retourne un tableau: http://www.Ruby-doc.org/core-2.1.2/String.html#method-i-lines

Je ne l'ai pas testé contre votre scénario, mais je parie que cela fonctionnera mieux que de choisir manuellement les caractères de nouvelle ligne.

19
23inhouse

Ou une expression régulière

.split(/\n/)
5
Mark Swardstrom

Vous ne pouvez pas utiliser de guillemets simples pour cela:

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