我試圖用\\
替換所有出現的\
。這是我的第一次嘗試:用`\`替換ruby中的``
> puts '\\'.gsub('\\', '\\\\')
\
當我看到輸出時,我非常驚訝。經過一番試驗,我終於能夠做到我想要的這個代碼:
> puts '\\'.gsub('\\', '\\\\\\')
\\
爲什麼不是第一塊代碼工作?爲什麼我需要六個反斜槓?
我試圖用\\
替換所有出現的\
。這是我的第一次嘗試:用`\`替換ruby中的``
> puts '\\'.gsub('\\', '\\\\')
\
當我看到輸出時,我非常驚訝。經過一番試驗,我終於能夠做到我想要的這個代碼:
> puts '\\'.gsub('\\', '\\\\\\')
\\
爲什麼不是第一塊代碼工作?爲什麼我需要六個反斜槓?
'\\'.gsub('\\', '\\\\')
當取代發生時,替換字符串'\\\\'
由正則表達式發動機通過,並\\
由\
取代。替換字符串結尾爲'\\'
,單個反斜槓。
的idomatic方式來取代任何單一bachslach翻一番是使用:
str.gsub(/\\/, '\\\\\\\\\') # 8 backslashes!
短一點
'\\'.gsub(/(\\)/, '\1\1')
您也可以使用Regexp.escape
逃避你\
:
puts '\\'.gsub('\\', Regexp.escape('\\\\'))
哦,所以在這裏我必須逃脫兩次 - 首先是Ruby,然後是它的正則表達式引擎?會'更正確嗎? – xx77aBs
@ xx77aBs沒錯,我編輯了答案。 –