我的路径字符串(窗口)带有来自给定导出源的反斜杠,格式为
"path\to\something"
当我尝试在ruby中阅读时,它会读取
\t
和
\s
作为转义序列。 最后我想要一个
File.join(my_unix_path, "path\to\something")
我知道
%q{"path\to\something"}
工作,但因为我在变量中有字符串,我不能像那样使用它。 有任何想法如何删除它或将其转换为常规的unix路径?
答案 0 :(得分: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
时遇到的问题是因为字符串是双引号。如果是单引号,问题就不会发生,因为反斜线会失去魔力。有关详细信息,请参阅“Backslashes in Single quoted strings vs. Double quoted strings in Ruby?”。
答案 1 :(得分:0)
如果你真的有"path\to\something"
(我怀疑),那么你已经在该字符串中有标签和空格。如果你真的想要"path\to\something"
(我也怀疑),那么你不需要做任何事情。你已经拥有了。
如果您实际拥有'path\to\something'
(我认为可能),那么您不会将反斜杠解释为转义字符。如果你真的想要'path\to\something'
(我认为很可能),那么你不需要做任何事情。你已经拥有了。