【问题标题】:How to escape "\" characters in Java如何在 Java 中转义“\”字符
【发布时间】:2009-07-23 05:55:07
【问题描述】:

众所周知,我们可以使用

string aa=@"E:\dev_workspace1\AccessCore\WebRoot\DataFile" 

在c#中为了不加倍'\'。

但是在java中怎么做呢?

【问题讨论】:

    标签: c# java


    【解决方案1】:

    不幸的是,Java 中没有全字符串转义运算符。您需要将代码编写为:

    String aa = "E:\\dev_workspace1\\AccessCore\\WebRoot\\DataFile";
    

    【讨论】:

      【解决方案2】:

      没有完整的字符串转义符,但如果是用于文件访问,你可以使用正斜杠:

      String aa="E:/dev_workspace1/AccessCore/WebRoot/DataFile";
      

      Windows allows 正反斜杠作为路径分隔符。如果您将路径传递给外部程序,该程序会对其进行破坏并失败,它将无法正常工作,但这种情况非常罕见。

      【讨论】:

      • 真正聪明的是Java吗?我认为这是 Windows 允许 / 作为文件分隔符以及 \.
      • 不知道 - 我一直以为是 Java,但可能是 Windows API 调用本身。调整以防万一。
      • 嘿,我喜欢人们为增加我的代表而慷慨地工作的方式!感谢 Pax 改进答案! :-)
      • 是的,Windows 允许 / 作为路径分隔符,而不是 Java
      • Java 只有 / 作为文件分隔符。在 Windows 下,还允许使用 \。所以/是Java下的正确方式,\是平台相关的。
      【解决方案3】:

      可能不是您问题的直接答案,但我觉得应该指出这一点:

      有一个system-dependent default name-separator character

      【讨论】:

      • 确实如此,但正如 Vinko 指出的那样,您实际上并不需要打扰该属性;正斜杠工作得很好。
      【解决方案4】:

      真正独立于系统的方法是这样做:

      String aa = "E:/dev_workspace1/AccessCore/WebRoot/DataFile";
      String output = aa.replace('/', File.separatorChar);
      

      它会给你 “E:\dev_workspace1\AccessCore\WebRoot\DataFile” 在 Windows 和 “E:/dev_workspace1/AccessCore/WebRoot/DataFile” 几乎在其他任何地方。

      【讨论】:

      • 为什么要替换? '/' 始终在 Java 上工作,并自动转换为与系统相关的分隔符。
      • 因为使用这个字符串真的非常非常安全。你甚至可以将它作为参数传递给 Windows 上一个不起眼的 DOS 时代命令行程序,或者将它提供给真正古老的 WinAPI 调用或任何不能处理斜杠作为分隔符的东西。
      • 你替换的包装是一个 if(File.seperatorChar!='/') 作为对 unix 平台的优化。
      【解决方案5】:

      如果你写一个路径,你应该使用'/'作为Java下的路径分隔符。 '/' 是 Java 下的官方路径分隔符,将被转换为适用于平台的分隔符(windows 下的 \,unix 下的 /)。如果传递给系统,字符串的其余部分保持不变,因此“\”也可以在 Windows 下使用。但是表示这个路径的正确方式是“E:/dev_workspace1/AccessCore/WebRoot/DataFile”。

      如果你想在 Java 字符串中表示一个 '\',你必须用另一个转义它:“This String contains a \”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 2011-12-08
        • 2013-06-25
        • 2011-04-02
        • 2010-11-16
        相关资源
        最近更新 更多