【问题标题】:Readline, the Input Record Separator and RubyReadline,输入记录分隔符和 Ruby
【发布时间】:2010-03-17 15:45:17
【问题描述】:

在 Ruby 中,我希望读取数据,直到到达分隔符或文件末尾。

我发现这可以通过将$/$INPUT_RECORD_SEPARATOR 重新定义为我的分隔符来实现。然而,由于 Ruby 语言中的所有“特性”,改变全局的值来做到这一点似乎很笨拙。此外,readline 用于使用分隔符,但不包含在返回的内容中。

在使用不涉及在循环中逐个字符获取值的分隔符时,是否有任何其他方法可以“读取直到”?

【问题讨论】:

  • 在这种情况下,“readline 用于使用分隔符而不包含在返回的内容中”是什么意思?

标签: ruby readline


【解决方案1】:

基本上,来自IO 的所有readline 风格的方法都接受分隔符字符串作为可选参数:

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

【讨论】:

  • 太好了,我怎么能在“f.each do |line|”中使用它还是“while line s.gets”?
  • 为了胜利!
  • “骗子”就这么多了。我会说需要向 Ruby 道歉。告诉你的电脑你很抱歉。 :-)
【解决方案2】:

您可以将记录分隔符指定为gets的参数,例如:

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

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多