Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby gsub替换值的单个反斜杠?_Ruby_Gsub_Backslash_Html Escape Characters - Fatal编程技术网

Ruby gsub替换值的单个反斜杠?

Ruby gsub替换值的单个反斜杠?,ruby,gsub,backslash,html-escape-characters,Ruby,Gsub,Backslash,Html Escape Characters,有人知道如何在Ruby的gsub方法中提供一个反斜杠作为替换值吗?我认为对替换值使用双反斜杠会导致一个反斜杠,但它会导致两个反斜杠 示例:“a\b”.gsub(“\”,“\\”) 结果:a\\b 我还使用块得到了相同的结果: 示例:“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'。长度
(3)


'a\\b'.length
(3)

您可以通过
“\\\”
“\\\”
表示单个反斜杠。在irb试试这个,在哪里

 "\\".size
正确输出
1
,表明此字符串中确实只有一个字符,而不是您认为的2个字符。你也可以做一个

 puts "\\" 
同样,你的例子

puts("a\b".gsub("\", "\\"))
正确打印

a\b

使用单引号确实有效,但单反斜杠表示为“\\”
放入结果字符串,或验证字符串的大小-它是3…并注意
“a\b”.gsub(“\”,“\\”)。每个字符映射(&:ord)\=>[97,92,98]
。这是否回答了您的问题?