为什么'\n'不起作用,$ /是什么意思?

mko*_*mko 0 ruby

为什么这段代码不起作用:

"hello \nworld".each_line(separator = '\n') {|s| p s}
Run Code Online (Sandbox Code Playgroud)

这有效吗?

"hello \nworld".each_line(separator = $/) {|s| p s}
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 8

一个10秒的谷歌得出这个:

$/ is the input record separator, newline by default.
Run Code Online (Sandbox Code Playgroud)

第一个不起作用,因为你使用单引号.单引号字符串中将忽略反斜杠转义序列.改为使用双引号:

"hello \nworld".each_line(separator = "\n") {|s| p s}
Run Code Online (Sandbox Code Playgroud)

  • "10秒谷歌"显然需要太长时间......今天的孩子...... :-( (2认同)

Mar*_*mas 5

首先,换行是默认值.所有你需要的是

"hello \nworld".each_line {|s| p s}
Run Code Online (Sandbox Code Playgroud)

其次,单引号的行为与双引号不同.'\n'表示字母反斜杠后跟字母n,而"\n"表示换行符.

最后,特殊变量$ /是默认情况下为"\n"的记录分隔符,这就是您不需要在上面的示例中指定分隔符的原因.