我正在尝试做类似以下的事情。假设我有以下字符串:
"some string"
我想用\ 1取代空间。但是,我使用单引号或双引号,我得不到结果:
"some string".gsub(" ", "\1") => "somestring"
"some string".gsub(" ", '\1') => "somestring"
"some string".gsub(" ", '\\1') => "somestring"
我想要的是:
"some\1string"
有什么建议吗?
答案 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"