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"). Для правильної інтерпретації нового рядка потрібна інтерполяція рядків, а подвійні лапки - один із способів зробити це.


39

У Ruby одинарні лапки навколо рядка означають, що символи переходу не інтерпретуються. На відміну від С, де одинарні лапки позначають один символ. У цьому випадку '\n'насправді еквівалентно"\\n" .

Отже, якщо ви хочете поділитися, \nвам потрібно змінити свій код, щоб використовувати подвійні лапки.

.split("\n")


22

Рубі має методи String#each_lineіString#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"]
нової лінії

Крім того, для файлів, прочитаних у текстовому режимі (за замовчуванням), послідовності нового рядка перекладаються у "\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")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.