繁体   English   中英

红宝石串内的单个反斜杠

[英]Single Backslash inside ruby string

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

"path\to\something"

当我尝试用红宝石阅读时,它显示为

\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' (我认为这很可能),那么您就无需执行任何操作。 您已经拥有了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM