ruby .split( '\ n')が改行で分割されない


82

この文字列が「\ 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".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"]

回答:


174

必要.split("\n")です。改行を正しく解釈するには文字列補間が必要であり、二重引用符はそのための1つの方法です。


39

Rubyでは、文字列を一重引用符で囲むと、エスケープ文字が解釈されないことを意味します。一重引用符が単一の文字を表すCとは異なります。この場合'\n'、実際には"\\n"。と同等です。

したがって、分割する\n場合は、二重引用符を使用するようにコードを変更する必要があります。

.split("\n")


22

RubyにはメソッドString#each_lineString#lines

列挙型を返します:http//www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

配列を返します:http//www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

私はあなたのシナリオに対してそれをテストしませんでしたが、改行文字を手動で選択するよりもうまくいくと思います。


しかし、ノートに#linesしながら、改行文字を削除することはできません#splitでしょうその: "a\nb".lines => ["a\n", "b"]しばらく"a\nb".split("\n") => ["a", "b"]
tanius

また、テキストモード(デフォルト)で読み取られたファイルの場合、改行シーケンスはに変換されます"\n"(を参照)。したがって、手動で選択する必要はありません。"\n"プラットフォーム間で使用します。
tanius


3

これに一重引用符を使用することはできません。

"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")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.