红宝石字符串中的单反斜杠

时间:2013-02-14 09:36:02

标签: ruby string backslash

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

"path\to\something"

当我尝试在ruby中阅读时,它会读取

\t

\s

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

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

我知道

%q{"path\to\something"}

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

2 个答案:

答案 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'(我认为很可能),那么你不需要做任何事情。你已经拥有了。