2010-03-17 62 views
4

在Ruby中,我正在读取数据,直到达到分隔符或文件末尾。Readline,输入记录分隔符和Ruby

我发现这是可能的重新定义$/$INPUT_RECORD_SEPARATOR我的分隔符。但是,对于Ruby语言中的所有“特性”,似乎hackey会更改全局的值来执行此操作。另外,readline用于使用分隔符,而不包括返回的内容。

是否有任何其他方式来“读取直到”,同时消耗分隔符,不涉及到在字符串中的char char值循环?

+0

是什么“readline用于使用分隔符,而不包含在返回的内容中”意思是在这种情况下? – mbigras 2017-02-22 19:47:18

回答

3

基本上,从IO所有readline式的方法接受分隔字符串作为一个可选的参数:

>> s = StringIO.new('hello from string') 
=> #<StringIO:0x52bf34> 
>> s.readline ' ' 
=> "hello " 
>> s.readline ' ' 
=> "from " 
>> s.readline ' ' 
=> "string" 
+0

非常好,我怎么能在“f.each do | line |”中使用它或“而行s.gets”? – QueueHammer 2010-03-17 17:14:29

+0

'f.each(''){| s |把s}' – 2010-03-17 17:41:57

+0

为了赢! <! - comment padding - > – QueueHammer 2010-03-17 18:25:07

1

您可以指定记录分隔符作为参数来获得,比如:

while line = gets("\r") 
    puts line 
end 
相关问题