Readline, разделитель входных записей и Ruby - PullRequest
4 голосов
/ 17 марта 2010

В Ruby я ищу данные, пока не достигну разделителя или конца файла.

Я обнаружил, что это возможно, переопределив $/ или $INPUT_RECORD_SEPARATOR для моего разделителя. Тем не менее, со всеми «возможностями» в языке Ruby кажется хакерским, чтобы изменить значение глобала, чтобы сделать это. Кроме того, readline используется для использования разделителя, не включая его в возвращаемое значение.

Есть ли другой способ «читать до» при использовании разделителя, который не предполагает получение значений char в char в цикле?

Ответы [ 2 ]

4 голосов
/ 17 марта 2010

По сути, все методы readline в стиле IO принимают строку-разделитель в качестве необязательного параметра:

>> s = StringIO.new('hello from string')
=> #<StringIO:0x52bf34>
>> s.readline ' '
=> "hello "
>> s.readline ' '
=> "from "
>> s.readline ' '
=> "string"
1 голос
/ 25 ноября 2010

Вы можете указать разделитель записей в качестве аргумента для получения, например ::

while line = gets("\r")
  puts line
end
...