Ruby gsub替换值的单个反斜杠?
有人知道如何在Ruby的gsub方法中提供一个反斜杠作为替换值吗?我认为对替换值使用双反斜杠会导致一个反斜杠,但它会导致两个反斜杠 示例:Ruby gsub替换值的单个反斜杠?,ruby,gsub,backslash,html-escape-characters,Ruby,Gsub,Backslash,Html Escape Characters,有人知道如何在Ruby的gsub方法中提供一个反斜杠作为替换值吗?我认为对替换值使用双反斜杠会导致一个反斜杠,但它会导致两个反斜杠 示例:“a\b”.gsub(“\”,“\\”) 结果:a\\b 我还使用块得到了相同的结果: 示例:“a\b”.gsub(“\”){“\\”} 结果:a\\b 很明显,我不能用一个反斜杠来表示替换值,因为这只会使它后面的引号失效。我也尝试过在替换值周围使用单引号(而不是双引号),但结果中仍然有两个反斜杠 编辑:多亏了这些评论,
“a\b”.gsub(“\”,“\\”)
结果:a\\b
我还使用块得到了相同的结果:
示例:“a\b”.gsub(“\”){“\\”}
结果:a\\b
很明显,我不能用一个反斜杠来表示替换值,因为这只会使它后面的引号失效。我也尝试过在替换值周围使用单引号(而不是双引号),但结果中仍然有两个反斜杠
编辑:多亏了这些评论,我现在意识到我的困惑在于Rails控制台如何报告操作结果(即a\\b
)。虽然字符串'a\b'
和'a\\b'
看起来不同,但它们的长度相同:
'a\b'。长度
(3)
'a\\b'.length
(3)您可以通过“\\\”
或“\\\”
表示单个反斜杠。在irb试试这个,在哪里
"\\".size
正确输出1
,表明此字符串中确实只有一个字符,而不是您认为的2个字符。你也可以做一个
puts "\\"
同样,你的例子
puts("a\b".gsub("\", "\\"))
正确打印
a\b
使用单引号确实有效,但单反斜杠表示为“\\”
放入结果字符串,或验证字符串的大小-它是3…并注意“a\b”.gsub(“\”,“\\”)。每个字符映射(&:ord)\=>[97,92,98]
。这是否回答了您的问题?