【问题标题】:Why is a double-backslash escape required inside single-quoted strings?为什么在单引号字符串中需要双反斜杠转义?
【发布时间】:2012-12-24 23:35:27
【问题描述】:

只是好奇 Ruby 开发人员决定解释单引号内的双反斜杠转义序列背后的原因。我可以理解为什么必须解释转义的单引号,因为无法插入单引号字符。例如:

'\'' == "'"

但是考虑'\\' == "\\"。为什么这是另一个特例?

【问题讨论】:

    标签: ruby string escaping quotes


    【解决方案1】:

    以反斜杠结束字符串

    硬引用字符串中最初需要的一种转义是\',其他人也注意到了这一点。

    但是,需要\\的真正根本原因是,一旦支持\',否则就不可能结束 带有反斜杠的硬引号字符串。

    【讨论】:

    • 是的,我相信这是真正的原因和真正的答案。如果它以反斜杠结尾,那么这样的字符串就不能被终止,这是合乎逻辑的。 '...\' 这也将包含在字符串中
    【解决方案2】:

    这是插入反斜杠本身。如果没有这种特殊情况,就不可能在单引号字符串中使用反斜杠。

    \'\\ are the only two escape sequences in single-quoted strings

    【讨论】:

      【解决方案3】:

      撇号需要转义

      这种特殊情况是在单引号字符串中嵌入单引号或撇号所必需的。考虑以下几点:

      '\''
      # => "'"
      
      'It\'s a baby boy!'
      # => "It's a baby boy!"
      

      如果没有转义,Ruby 将假定第二个引号终止字符串,留下不平衡的第三个引号。

      斜线需要转义

      作为前面的推论,您需要转义转义字符以避免转义后续字符。例如,'\' 表示要转义第二个引号,留下一个未终止的字符串。但是,'\\' 会在字符串中产生一个斜线。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-13
        • 2021-11-16
        • 2021-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-17
        • 1970-01-01
        相关资源
        最近更新 更多