2

我试图用三个连续的换行符("\n\n\n")分割一个字符串。我正在尝试str.split('\n\n\n'),但没有用,但是当我更改为 时str.split("\n\n\n"),它开始起作用。谁能向我解释为什么会发生这种行为?

4

3 回答 3

8

单引号中的字符串是原始字符串。'\n\n\n'三个反斜杠和三个n,而不是您预期的三个换行符也是如此。只有双引号字符串可以正确转义。

puts 'abc\nabc'  # => abc\nabc
puts "abc\nabc"  # => abc
                 #    abc
于 2012-12-28T02:50:16.717 回答
5

单引号字符串具有实际/文字内容,例如

1.9.3-p194 :003 > puts 'Hi\nThere'
Hi\nThere
 => nil 

而双引号字符串“插入”特殊字符(\n)并进行换行,例如

1.9.3-p194 :004 > puts "Hi\nThere"
Hi
There
 => nil 
1.9.3-p194 :005 > 

最佳实践建议:

  • 尽可能选择单引号而不是双引号(根据需要使用双引号进行插值)。
  • 将“引号”嵌套在某处时,将双引号放在单引号内
于 2012-12-28T02:58:03.333 回答
0

在单引号字符串文字中,反斜杠不需要加倍

'\n' == '\\n'
于 2012-12-28T02:53:53.300 回答