[英]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.