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

时间:2011-06-12 17:05:22

标签: ruby

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

"hello \nworld".each_line(separator = '\n') {|s| p s}

虽然这有效吗?

"hello \nworld".each_line(separator = $/) {|s| p s}

3 个答案:

答案 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)

简单gsub!您的字符串,其中包含有效的"\n"换行符:

text = 'hello \nworld'
text.gsub!('\n', "\n")

之后\n字符将像换行符一样。