我有来自给定导出源的带有反斜杠的路径字符串(窗口),格式为
"path\to\something"
当我尝试用 ruby 阅读时,它显示为
\t
和
\s
作为转义序列。最后我只想一个
File.join(my_unix_path, "path\to\something")
我知道
%q{"path\to\something"}
有效,但由于我在变量中有字符串,所以我不能那样使用它。任何想法如何删除它或将其转换为常规的 unix 路径?
不要为 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 中的双引号字符串? ”。
如果你真的有"path\to\something"
(我怀疑),那么你已经在那个字符串中有制表符和空格。如果你真的想要"path\to\something"
(我也怀疑),那么你不必做任何事情。你已经有了。
如果您确实有'path\to\something'
(我认为很可能),那么您没有将反斜杠解释为转义字符。如果你真的想要'path\to\something'
(我认为很可能),那么你不必做任何事情。你已经有了。