2012-07-29 3 views
1

Я имею дело с файлом, который имеет кучу записей, как этотРубин резка полей и сохранение

2012-07-15 10:16:27 C ?\path\to a filename\ called this file.doc 

Я хочу взять линию, как это и вырезать первые 3 полей, разделенных пробелами. Итак ...

var1 = 2012-07-15 
var2 = 10:16:27 
var3 = c 

Я гугл вокруг, и я просто не могу найти правильный метод использовать. Спасибо за помощь!

+1

Можете добавить код, который вы пробовали? – InternetSeriousBusiness

ответ

3

Ruby's String#split принимает предел в качестве второго параметра. Это будет делать именно то, что вы ищете:

irb(main):005:0> str = "2012-07-15 10:16:27 C ?\path\to a filename\ called this file.doc" 
=> "2012-07-15 10:16:27 C ?path\to a filename called this file.doc" 
irb(main):006:0> str.split " ", 4               
=> ["2012-07-15", "10:16:27", "C", "?path\to a filename called this file.doc"] 

Вы можете использовать деструктурирующие, чтобы назначить их в локальные переменные, если вы хотите:

one, two, three, rest = str.split " ", 4

1

Метод сплит будет делать то, что вы хотите :

string = '2012-07-15 10:16:27 C ?\path\to a filename\ called this file.doc' 
date, time, drive = string.split 
+0

ничего себе ... это было проще, чем я это делал. Большое спасибо –

+0

Не совсем, это слишком много срывается, уступая: '[" 2012-07-15 "," 10:16:27 "," C ","? \\ path \\ to "," a "," "filename \\", "called", "this", "file.doc"] '. –

+0

Вправо. Но переменным присваиваются только первые 3 элемента - остальная часть игнорируется. Я согласен с тем, что ответ Джейсона был лучше. –

Смежные вопросы