本文简要介绍ruby语言中 IO.gets
的用法。
用法
gets(sep = $/, **getline_opts) → string or nil
gets(limit, **getline_opts) → string or nil
gets(sep, limit, **getline_opts) → string or nil
从流中读取并返回数据;将返回值分配给 $_
。
如果没有给出参数,则返回由行分隔符 $/
确定的下一行,如果没有则返回 nil
:
f = File.open('t.txt')
f.gets # => "This is line one.\n"
$_ # => "This is line one.\n"
f.gets # => "This is the second line.\n"
f.gets # => "This is the third line.\n"
f.gets # => nil
如果给出了字符串参数 sep
但没有参数 limit
,则返回由行分隔符 sep
确定的下一行,如果没有,则返回 nil
:
f = File.open('t.txt')
f.gets(' is') # => "This is"
f.gets(' is') # => " line one.\nThis is"
f.gets(' is') # => " the second line.\nThis is"
f.gets(' is') # => " the third line.\n"
f.gets(' is') # => nil
注意 sep
的两个特殊值:
-
nil
:读取并返回整个流。 -
''
(空字符串):读取并返回下一个“paragraph”,段落分隔符是两个连续的行分隔符。
给定整数参数limit
,最多返回limit+1
字节:
# Text with 1-byte characters.
File.open('t.txt') {|f| f.gets(1) } # => "T"
File.open('t.txt') {|f| f.gets(2) } # => "Th"
File.open('t.txt') {|f| f.gets(3) } # => "Thi"
File.open('t.txt') {|f| f.gets(4) } # => "This"
# No more than one line.
File.open('t.txt') {|f| f.gets(17) } # => "This is line one."
File.open('t.txt') {|f| f.gets(18) } # => "This is line one.\n"
File.open('t.txt') {|f| f.gets(19) } # => "This is line one.\n"
# Text with 2-byte characters, which will not be split.
File.open('t.rus') {|f| f.gets(1).size } # => 1
File.open('t.rus') {|f| f.gets(2).size } # => 1
File.open('t.rus') {|f| f.gets(3).size } # => 2
File.open('t.rus') {|f| f.gets(4).size } # => 2
使用参数 sep
和 limit
,结合上述两种行为:
-
返回由行分隔符
sep
确定的下一行,如果没有则返回nil
。 -
但返回不超过
limit+1
字节。
对于上述所有形式,可以给出尾随可选关键字参数;请参阅 Getline 选项:
f = File.open('t.txt')
# Chomp the lines.
f.gets(chomp: true) # => "This is line one."
f.gets(chomp: true) # => "This is the second line."
f.gets(chomp: true) # => "This is the third line."
f.gets(chomp: true) # => nil
相关用法
- Ruby IO.getc用法及代码示例
- Ruby IO.getbyte用法及代码示例
- Ruby IO.eof用法及代码示例
- Ruby IO.read用法及代码示例
- Ruby IO.fileno用法及代码示例
- Ruby IO.pread用法及代码示例
- Ruby IO.raw用法及代码示例
- Ruby IO.readlines用法及代码示例
- Ruby IO.to_i用法及代码示例
- Ruby IO.self << object用法及代码示例
- Ruby IO.tty?用法及代码示例
- Ruby IO.close_write用法及代码示例
- Ruby IO.write_nonblock用法及代码示例
- Ruby IO.set_encoding_by_bom用法及代码示例
- Ruby IO.syswrite用法及代码示例
- Ruby IO.close_read用法及代码示例
- Ruby IO.stat用法及代码示例
- Ruby IO.pwrite用法及代码示例
- Ruby IO.ungetc用法及代码示例
- Ruby IO.noecho用法及代码示例
- Ruby IO.new用法及代码示例
- Ruby IO.sysopen用法及代码示例
- Ruby IO.try_convert用法及代码示例
- Ruby IO.write用法及代码示例
- Ruby IO.pathconf用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 IO.gets。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。