用\ 1替换字符

时间:2012-01-04 20:35:59

标签: ruby

我正在尝试做类似以下的事情。假设我有以下字符串:

"some string"

我想用\ 1取代空间。但是,我使用单引号或双引号,我得不到结果:

"some string".gsub(" ", "\1") => "somestring"
"some string".gsub(" ", '\1') => "somestring"
"some string".gsub(" ", '\\1') => "somestring"

我想要的是:

"some\1string"

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

这只是令人讨厌,因为\1\9保留用于替换。

可能的解决方案是:

"some string".gsub(" ", '\\\\1')

这有点难看,但它确实有效。

另一种方法是使用不执行替换的块样式:

"some string".gsub(" ") { '\1' }

请记住,输出将为"some\\1string",因为反斜杠在双引号字符串中表示为\\。如果你打印出来,你会得到一个反斜杠。

答案 1 :(得分:2)

这也是可能的:

s = "some string"

p s.split.join('\1') # "some\\1string"