单引号与双引号

时间:2012-12-28 02:40:16

标签: ruby string escaping quotes double-quotes

我正在尝试将字符串拆分三个连续的换行符("\n\n\n")。我正在尝试str.split('\n\n\n')并且它无效,但当我更改为str.split("\n\n\n")时,它开始起作用。任何人都可以向我解释为什么会发生这种行为吗?

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分: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 > 

最佳做法建议:

  • 尽可能在双引号上选择单引号(根据需要使用双引号进行插值)。
  • 当嵌套“引用内部”引号“某处”时,将双引号放在单引号内

答案 2 :(得分:0)

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

'\n' == '\\n'