【发布时间】:2021-08-19 00:23:41
【问题描述】:
有谁知道如何在 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)
【问题讨论】:
-
使用单引号确实有效,但单反斜杠表示为“\\”。
puts结果字符串,或者验证字符串的大小 - 它是 3。 -
...注意
"a\b".gsub("\", "\\").each_char.map(&:ord) #=> [97, 92, 98].
标签: ruby gsub backslash html-escape-characters