Ruby 为什么在单引号字符串中需要双反斜杠转义?
只是好奇Ruby开发人员决定在单引号中解释双反斜杠转义序列的背后是什么。我可以理解为什么必须解释转义单引号,因为无法插入单引号字符。例如:Ruby 为什么在单引号字符串中需要双反斜杠转义?,ruby,string,escaping,quotes,Ruby,String,Escaping,Quotes,只是好奇Ruby开发人员决定在单引号中解释双反斜杠转义序列的背后是什么。我可以理解为什么必须解释转义单引号,因为无法插入单引号字符。例如: '\'' == "'" 但请考虑 \'=“\”\代码>。为什么这是另一种特殊情况?这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠 \'和\撇号需要转义 这种特殊情况对于将单引号或撇号嵌入单引号字符串是必要的。考虑以下事项: '\'' # => "'" 'It\'s a baby boy!' # => "It's
'\'' == "'"
但请考虑<代码> \'=“\”\代码>。为什么这是另一种特殊情况?
这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠\'
和\
撇号需要转义
这种特殊情况对于将单引号或撇号嵌入单引号字符串是必要的。考虑以下事项:
'\''
# => "'"
'It\'s a baby boy!'
# => "It's a baby boy!"
如果没有转义,Ruby将假定第二个引号终止字符串,留下不平衡的第三个引号
斜杠需要逃生
作为前一个的推论,您需要转义转义字符以避免转义后续字符。例如,'\'
表示转义第二个引号,留下一个未终止的字符串。但是,'\\'
会在字符串中产生一个文本斜杠。以反斜杠结束字符串
硬引号字符串中最初需要的转义是\'
,其他人也注意到了这一点
但之所以需要
\\
的真正根本原因是,一旦支持\'
,否则就不可能用反斜杠结束一个硬引号字符串。是的,我相信这是真正的原因和正确的答案。逻辑上,如果字符串以反斜杠结尾,则不能终止该字符串<代码>“…\”这也将包含在字符串中