【问题标题】:Single Backslash inside ruby string红宝石字符串内的单个反斜杠
【发布时间】:2013-01-30 01:40:42
【问题描述】:

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

"path\to\something"

当我尝试在 ruby​​ 中阅读时,它会显示

\t

\s

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

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

我知道

%q{"path\to\something"}

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

【问题讨论】:

标签: ruby string backslash


【解决方案1】:

如果您确实有"path\to\something"(我对此表示怀疑),那么您在该字符串中已经有制表符和空格。如果你真的想要"path\to\something"(我也怀疑),那么你不需要做任何事情。你已经有了。

如果您实际上有'path\to\something'(我认为这很可能),那么您没有将反斜杠解释为转义字符。如果你真的想要'path\to\something'(我认为这很有可能),那么你不需要做任何事情。你已经有了。

【讨论】:

  • 这是我如何获取数据 (csv) 的示例行:3;"test.doc";"1\4\1\18\test.doc" 并使用 ruby​​ 和 CSV 导入row[2] 给了我一个带有这些反斜杠和上述问题的字符串。目前我通过在编辑器中打开文件并用正斜杠替换所有反斜杠来手动解决它。
【解决方案2】:

不要为 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?”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2014-02-11
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    相关资源
    最近更新 更多