如果我在双引号和单引号字符串的开头添加反斜杠+空格,我会得到不同的结果:
"\ text"
'\ text'
在双引号字符串的输出中我只看到一个空格。
在单引号字符串的输出中,我看到反斜杠+空格。
那里发生了什么?这是因为 '\'
在双引号字符串中被解释为特殊字符,但在单引号字符串中字符原样保留?
如果我将字符串更改为此,我会看到相同的输出,即单斜杠后跟一个空格,然后是文本:
"\\ text"
'\\ text'
在这两种情况下,反斜杠都被转义了。我很困惑为什么他们在这种情况下以相同的方式工作。
是否有一些规则可以帮助解释单引号字符串和双引号字符串在 Ruby 中如何处理反斜杠之间的根本区别?
最佳答案
双引号字符串支持全范围的转义序列,如下所示:
\a
响铃/警报 (0x07)\b
退格键 (0x08)\e
转义(0x1b)\f
福尔福德 (0x0c)\n
换行符 (0x0a)\r
返回 (0x0d)\s
空格 (0x20)\t
制表符 (0x09)\v
垂直制表符 (0x0b)
对于单引号字符串,两个连续的反斜杠被一个反斜杠代替,一个反斜杠后跟一个单引号就变成一个单引号:
'escape using "\\"' -> escape using "\"
'That\'s right' -> That's right
关于ruby - 单引号字符串中的反斜杠与双引号字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648156/