Я читаю из правительственного текстового файла, в котором $ используется в качестве разделителя, но я не думаю, что символ разделителя имеет значение ...
Так что ожидается:
'a$b$c$d'.split('$')
# => ["a", "b", "c", "d"]
В файлах данных, с которыми я работаю, строка заголовков столбцов (первая строка) заполнена равномерно, т. Е. Пустой заголовок отсутствует, как в:
'a$b$$d'
# or:
'a$b$c$'
Однако каждая строка можетимеют последовательные конечные разделители, такие как:
"w$x$$\r\n"
Обычно я читаю каждую строку и chomp это.Но это приводит к тому, что String # split обрабатывает два последних разделителя как один столбец:
"w$x$$\r\n".chomp.split('$')
# => ["w", "x"]
Если не выполнить chomp, то получу желаемый результат, хотя я должен скомпоновать последний элемент:
"w$x$$\r\n".split('$')
# => ["w", "x", "", "\r\n"]
Так что либо я должен:
- сжать строку , если , то последние не-символы новой строки НЕ являются последовательными разделителями
- сохранить символ новой строки, выполнить разделение, а затем сжать последний элемент, ЕСЛИ последние символы являются последовательным разделителем
Это кажется действительно неловким ... я что-то здесь упускаю?