ruby .split ('\ n') yeni satırda bölünmüyor


82

Bu dize neden her "\ n" için bölünmüyor? (RUBY)

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

Yanıtlar:


174

İhtiyacın var .split("\n"). Yeni satırı doğru şekilde yorumlamak için dize enterpolasyonu gereklidir ve çift tırnak bunu yapmanın bir yoludur.


39

Ruby'de bir dizenin etrafındaki tek tırnak işaretleri, kaçış karakterlerinin yorumlanmadığı anlamına gelir. Tek tırnakların tek bir karakteri ifade ettiği C'den farklı olarak. Bu durumda '\n'aslında eşdeğerdir "\\n".

Dolayısıyla, bölünmek \nistiyorsanız, kodunuzu çift tırnak kullanacak şekilde değiştirmeniz gerekir.

.split("\n")


22

Ruby'nin yöntemleri vardır String#each_lineveString#lines

bir enum döndürür: http://www.ruby-doc.org/core-1.9.3/String.html#method-i-each_line

bir dizi döndürür: http://www.ruby-doc.org/core-2.1.2/String.html#method-i-lines

Senaryonuza göre test etmedim ama bahse girerim yeni satır karakterlerini manuel olarak seçmekten daha iyi çalışacaktır.


Ancak #linesbunun satırsonu karakterini kaldırmayacağını ve bunu yapacağını unutmayın #split: "a\nb".lines => ["a\n", "b"]while"a\nb".split("\n") => ["a", "b"]
tanius

Ayrıca, metin modunda (varsayılan) okunan dosyalar için, satırsonu dizileri tercüme edilir "\n"( bakın ). Yani manuel olarak seçmenize gerek yok. "\n"Platformlar arasında kullanın .
tanius


3

Bunun için tek tırnak kullanamazsınız:

"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")
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.