2012-12-28 230 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 > 

最佳實踐建議:

  • 選擇了雙引號單引號時,可能(可根據需要使用插值雙引號)。
  • 嵌套'行情內部'引號'某處'將雙引號放在單引號內