在 ruby 中将 `\` 替换为 `\\`
Replacing `\` with `\\` in ruby
我正在尝试将所有出现的 \
替换为 \
。这是我的第一次尝试:
> puts '\'.gsub('\', '\\')
\
当我看到输出时,我感到非常惊讶。经过一些试验后,我终于能够做我想要的这个代码:
> puts '\'.gsub('\', '\\\')
\
为什么第一段代码不起作用?为什么我需要六个反斜杠?
'\'.gsub('\', '\\')
当替换发生时,替换字符串 '\\'
由 Regexp 引擎传递,\
被 \
替换。替换字符串以 '\'
、单个反斜杠结尾。
将任何单个 bachslach 替换为 double 的惯用方法是使用:
str.gsub(/\/, '\\\\\') # 8 backslashes!
短一点
'\'.gsub(/(\)/, '')
您也可以使用 Regexp.escape
来转义您的 \
:
puts '\'.gsub('\', Regexp.escape('\\'))
我正在尝试将所有出现的 \
替换为 \
。这是我的第一次尝试:
> puts '\'.gsub('\', '\\')
\
当我看到输出时,我感到非常惊讶。经过一些试验后,我终于能够做我想要的这个代码:
> puts '\'.gsub('\', '\\\')
\
为什么第一段代码不起作用?为什么我需要六个反斜杠?
'\'.gsub('\', '\\')
当替换发生时,替换字符串 '\\'
由 Regexp 引擎传递,\
被 \
替换。替换字符串以 '\'
、单个反斜杠结尾。
将任何单个 bachslach 替换为 double 的惯用方法是使用:
str.gsub(/\/, '\\\\\') # 8 backslashes!
短一点
'\'.gsub(/(\)/, '')
您也可以使用 Regexp.escape
来转义您的 \
:
puts '\'.gsub('\', Regexp.escape('\\'))