Ruby扫描/获取直到EOF

mru*_*ult 5 ruby eof

我想扫描未知数量的线,直到扫描所有线.我怎么用红宝石做到这一点?

例如:

put returns between paragraphs

for linebreak add 2 spaces at end

_italic_ or **bold**  
Run Code Online (Sandbox Code Playgroud)

输入不是来自'文件',而是来自STDIN.

fal*_*tru 10

使用IO#read(不带length参数,直到EOF才读取)

lines = STDIN.read
Run Code Online (Sandbox Code Playgroud)

或者getsnil参数一起使用:

lines = gets(nil)
Run Code Online (Sandbox Code Playgroud)

要表示EOF,请键入Ctrl+ D(Unix)或Ctrl+ Z(Windows).


PSk*_*cik 9

在ruby中有很多方法可以做到这一点.大多数情况下,你一次想要处理一行,你可以做,例如,你可以做

while line=gets
end
Run Code Online (Sandbox Code Playgroud)

要么

STDIN.each_line do |line|
end
Run Code Online (Sandbox Code Playgroud)

或者通过使用-n开关运行ruby ,例如,这意味着上述循环中的一个($_在每次迭代中都会保存行,并且您可以添加BEGIN{},END{}就像在awk- 这对于单行来说非常有用).

STDIN.read但是,我不会这样做,因为它会立即将整个文件读入内存(如果文件非常大,可能会很糟糕.)