在 ruby 中将 `\` 替换为 `\\`

Replacing `\` with `\\` in ruby

我正在尝试将所有出现的 \ 替换为 \。这是我的第一次尝试:

> puts '\'.gsub('\', '\\')
\

当我看到输出时,我感到非常惊讶。经过一些试验后,我终于能够做我想要的这个代码:

> puts '\'.gsub('\', '\\\')
\

为什么第一段代码不起作用?为什么我需要六个反斜杠?

'\'.gsub('\', '\\')

当替换发生时,替换字符串 '\\'Regexp 引擎传递,\\ 替换。替换字符串以 '\'、单个反斜杠结尾。


将任何单个 bachslach 替换为 double 的惯用方法是使用:

str.gsub(/\/, '\\\\\')  # 8 backslashes!

短一点

'\'.gsub(/(\)/, '')

您也可以使用 Regexp.escape 来转义您的 \:

puts '\'.gsub('\', Regexp.escape('\\'))