"foo\ bar" 我找到了如何替换为 multiple backslashes但无法使其适应单个反斜杠。 到目前为止我已经试-6ren">
gpt4 book ai didi

用一个反斜杠替换空格

转载 作者:行者123 更新时间:2023-12-04 12:00:34 24 4
gpt4 key购买 nike

我想用一个反斜杠和这样的空格替换一个空格:

"foo bar" --> "foo\ bar"

我找到了如何替换为 multiple backslashes但无法使其适应单个反斜杠。

到目前为止我已经试过了:

x <- "foo bar" 
gsub(" ", "\\ ", x)
# [1] "foo bar"

gsub(" ", "\\\ ", x)
# [1] "foo bar"

gsub(" ", "\\\\ ", x)
# [1] "foo\\ bar"

但是,所有的结果都不能满足我的需要。我需要替换来动态创建文件路径,其中包含名称如

的文件夹

/some/path/foo bar/foobar.txt

要将它们用于 system() 中的 shell 命令,必须使用 \ 退出空格到

/some/path/foo\bar/foobar.txt

你知道如何解决这个问题吗?

最佳答案

您的问题是字符串的内容与其表示之间的混淆。当您在 R 中以普通方式打印字符串时,您将 永远 看到单个反斜杠(除非它表示特殊字符,例如 print("y\n") . 如果你改用 cat(),你只会看到一个反斜杠。

x <- "foo bar"
y <- gsub(" ", "\\\\ ", x)
print(y)
## [1] "foo\\ bar"
cat(y,"\n") ## string followed by a newline
## foo\ bar

字符串中有8个字符; 6 个字母、一个空格和反斜杠。

nchar(y)  ## 8

为了比较,请考虑 \n(换行符)。

z <- gsub(" ", "\n ", x)
print(z)
## [1] "foo\n bar"
cat(z,"\n")
## foo
## bar
nchar(z) ## 8

如果您正在构建文件路径,使用正斜杠可能会更容易 - 在所有操作系统(甚至 Windows)上,正斜杠在 R 中用作文件分隔符。或者查看 file.path()。 (不知道你到底想做什么,我不能说更多。)

关于用一个反斜杠替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com