Ruby gsub 替换值的单个反斜杠?
Single backslash for Ruby gsub replacement value?
有谁知道如何在 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
有谁知道如何在 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