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

问题描述

有谁知道如何在 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...