我想使用gsub
函数将字符串中每个反斜杠替换为2个反斜杠。
目前,我尝试的方法是gsub("\\\\", "\\", x)
,但似乎不起作用。然而,如果我将表达式更改为用"a"替换每个反斜杠,它可以正常工作。
> gsub("\\\\", "\\", "\\")
[1] ""
> gsub("\\\\", "a", "\\")
[1] "a"
> gsub("\\\\", "\\\\", "\\")
[1] "\\"
最后一个字符只是一个单反斜杠;R只打印2,因为它使用反斜杠打印转义字符。使用nchar
确认长度为1。
是什么导致了这种功能?gsub
的第二个参数不是正则表达式,所以在字符串字面值中有4个反斜杠应该被转换为具有2个反斜杠的字符。更让人费解的是,上面的第一个gsub
调用返回一个空字符串。
gsub("\\\\", "\\\\\\\\", x)
吗?此外,如果您使用cat()
函数而不是默认的print()
函数来输出值,您将无法看到斜线的转义部分。 - MrFlick