为什么这段代码不起作用:
"hello \nworld".each_line(separator = '\n') {|s| p s}
虽然这有效吗?
"hello \nworld".each_line(separator = $/) {|s| p s}
答案 0 :(得分:8)
10秒google产生了这个:
$/ is the input record separator, newline by default.
第一个不起作用,因为您使用了单引号。单引号字符串中将忽略反斜杠转义序列。改为使用双引号:
"hello \nworld".each_line(separator = "\n") {|s| p s}
答案 1 :(得分:5)
首先,换行是默认值。你所需要的只是
"hello \nworld".each_line {|s| p s}
其次,单引号的行为与双引号不同。 '\n'
表示字母反斜杠后跟字母n,而"\n"
表示换行符。
最后,特殊变量$ /是默认情况下为“\ n”的记录分隔符,这就是为什么你不需要在上面的例子中指定分隔符。
答案 2 :(得分:0)