1

我有来自给定导出源的带有反斜杠的路径字符串(窗口),格式为

"path\to\something"

当我尝试用 ruby​​ 阅读时,它显示为

\t

\s

作为转义序列。最后我只想一个

File.join(my_unix_path, "path\to\something")

我知道

%q{"path\to\something"}

有效,但由于我在变量中有字符串,所以我不能那样使用它。任何想法如何删除它或将其转换为常规的 unix 路径?

4

2 回答 2

5

不要为 Ruby 的路径使用反斜杠。

与许多其他语言一样,Ruby 了解平台并将自动将路径斜线转换为平台的正确方向。这意味着您可以始终在路径中使用正斜杠,并完成它:

IO的文档中:

如果可能,Ruby 将在不同的操作系统约定之间转换路径名。例如,在 Windows 系统上,文件名“/gumby/ruby/test.rb”将打开为“\gumby\ruby\test.rb”。在 Ruby 字符串中指定 Windows 样式的文件名时,请记住转义反斜杠:

"c:\\gumby\\ruby\\test.rb"

我们这里的示例将使用 Unix 风格的正斜杠;File::SEPARATOR 可用于获取特定于平台的分隔符。

作为附加信息,您在"path\to\something"转义\s时看到的问题\t是因为字符串在双引号中。如果它在单引号中,则不会出现问题,因为反斜杠会失去它们的魔力。有关更多信息,请参阅“单引号字符串中的反斜杠与 Ruby 中的双引号字符串? ”。

于 2013-02-14T13:07:31.783 回答
0

如果你真的有"path\to\something"(我怀疑),那么你已经在那个字符串中有制表符和空格。如果你真的想要"path\to\something"(我也怀疑),那么你不必做任何事情。你已经有了。

如果您确实有'path\to\something'(我认为很可能),那么您没有将反斜杠解释为转义字符。如果你真的想要'path\to\something'(我认为很可能),那么你不必做任何事情。你已经有了。

于 2013-02-14T13:13:08.707 回答