【发布时间】:2012-12-13 09:19:29
【问题描述】:
我试图用三个连续的换行符 ("\n\n\n") 分割一个字符串。我正在尝试str.split('\n\n\n'),但它没有用,但是当我更改为str.split("\n\n\n") 时,它开始起作用了。谁能向我解释为什么会发生这种行为?
【问题讨论】:
标签: ruby string escaping quotes double-quotes
我试图用三个连续的换行符 ("\n\n\n") 分割一个字符串。我正在尝试str.split('\n\n\n'),但它没有用,但是当我更改为str.split("\n\n\n") 时,它开始起作用了。谁能向我解释为什么会发生这种行为?
【问题讨论】:
标签: ruby string escaping quotes double-quotes
单引号中的字符串是一个原始字符串。所以'\n\n\n' 是三个反斜杠和三个n,而不是您预期的三个换行符。只有双引号字符串可以正确转义。
puts 'abc\nabc' # => abc\nabc
puts "abc\nabc" # => abc
# abc
【讨论】:
单引号字符串具有实际/文字内容,例如
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 >
最佳实践建议:
【讨论】:
在单引号字符串文字中,反斜杠不需要加倍
'\n' == '\\n'
【讨论】: