2012-12-28 231 views
2

我试图通过三个连续的换行符("\n\n\n"),为了将一个字符串。我试图str.split('\n\n\n'),它没有工作,但当我改变为str.split("\n\n\n"),它开始工作。任何人都可以向我解释为什么发生这种行为?单引号VS双引号

回答

8

字符串在单引号是字符串。因此,'\n\n\n'是三个反斜杠和三个n,而不是您预期的三个换行。只有双引号字符串才能正确转义。

puts 'abc\nabc' # => abc\nabc 
puts "abc\nabc" # => abc 
       # abc 
0

在单引号字符串常量,反斜杠不需要被加倍

'\n' == '\\n' 
4

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

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 > 

最佳实践建议:

  • 选择了双引号单引号时,可能(可根据需要使用插值双引号)。
  • 嵌套'行情内部'引号'某处'将双引号放在单引号内