问题描述
有谁知道如何在 Ruby 的 gsub 方法中提供一个反斜杠作为替换值?我认为对替换值使用双反斜杠会导致一个反斜杠,但它会导致两个反斜杠。
示例:"a\b".gsub("\","\\")
结果:a\\b
我也使用块得到相同的结果:
示例:"a\b".gsub("\"){"\\"}
结果:a\\b
显然我不能使用单个反斜杠作为替换值,因为这只会用于转义后面的引号。我还尝试在替换值周围使用单引号(而不是双引号),但结果中仍然有两个反斜杠。
编辑:感谢评论者,我现在意识到我的困惑在于 Rails 控制台如何报告操作的结果(即 a\\b
)。尽管字符串 'a\b'
和 'a\\b'
看起来不同,但它们的长度相同:
'a\b'.length
(3)
'a\\b'.length
(3)
解决方法
您可以用 "\\"
或 '\\'
表示单个反斜杠。在 irb 中试试这个,其中
"\\".size
正确输出 1
,表明您确实在此字符串中只有一个字符,而不是您想象的 2 个。你也可以做一个
puts "\\"
同样,你的例子
puts("a\b".gsub("\","\\"))
正确打印
a\b