首页 文章

Java相当于C#的逐字字符串@

提问于
浏览
91

快问 . 是否有相应的@应用于Java中的字符串:

例如,我可以在C#中执行 @"c:\afolder\afile" 并让它在处理时忽略转义字符而不必执行 "c:\\afolder\\aFile" . 是否有Java等价物?

嗯:stackoverflow正在逃避我..哈哈 . 第二个例子应为:

C:(双反斜杠)afolder(双反斜杠)å文件

4 回答

  • 70

    No . 转义/外化字符串是您唯一的选择 .

  • 15

    不,Java没有verbatim string literals .

    但是,如果您希望使用类似Java(和基于Java-VM)的语言,则可能需要查看具有various forms of string literalGroovy .

  • 9

    正如肯特和乔恩所说,不,没有 .

    我正在回答只是指出,即使有,对于你的特殊情况,在一般情况下,假设一个以上的程序,这将是一个坏主意 .

    Java程序运行在比Windows更多的平台上,而其他平台具有不同的文件分隔符 . 因此,处理您的特定示例的正确方法是获取文件分隔符属性,而不是处理转义的反斜杠:

    String sep = System.getProperty("file.separator");
        String filename = ROOTDIR + sep + "folder" + sep + "afile";
    

    您根据某些策略单独创建ROOTDIR的地方 - 不仅是平台,还有您希望“afile”是相对于实际文件系统根目录还是相对于用户主目录 .

    但绝对是,使用文件分隔符属性可以使您的程序更广泛地使用 . 它更有效吗?是 . 正如万达赛克斯所说,“但这是值得的” .

  • 30

    目前它不支持Java,但可以在将来的版本中使用 . 在2018/01/23创建了 JEP 326: Raw String Literals

    查看进展https://bugs.openjdk.java.net/browse/JDK-8196004

    可能有一天你可以用:

    `c:\afolder\afile`
    

    UPDATE: JEP proposed to drop from JDK 12:326: Raw String Literals (Preview) 您可以在这里阅读理由:http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html

    更多细节在这里https://bugs.openjdk.java.net/browse/JDK-8215682

    The bottom line :Java近期不会有逐字字符串 . 即使它出现它也不会是`` .

相关问题