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

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

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

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

C:(双反斜线)文件夹(双反斜线)文件

Simon Rigby asked 2019-08-13T04:50:05Z
4个解决方案
70 votes

不。转义/外化字符串是您唯一的选择。

Kent Boogaart answered 2019-08-13T04:50:19Z
30 votes

不,Java没有逐字字符串文字。

但是,如果您希望使用类似Java(和基于Java-VM)的语言,那么您可能希望查看具有各种形式的字符串文字的Groovy。

Jon Skeet answered 2019-08-13T04:50:51Z
15 votes

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

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

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


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

您根据某些政策单独创建ROOTDIR的地方 - 不仅仅是平台,还有您想要的" afile" 相对于实际的文件系统根目录,或相对于用户的主目录。

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

CPerkins answered 2019-08-13T04:51:46Z
9 votes

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

请参阅[https://bugs.openjdk.java.net/browse/JDK-8196004]的进展情况

可能有一天你可以用:

`c:\afolder\afile`

更新:JEP建议从JDK 12:326:Raw String Literals(预览版)中删除你可以在这里阅读理由:[http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html]

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

底线:不久的将来Java中不会有逐字字符串。 即使它出现它也不会是``。

engilyin answered 2019-08-13T04:52:49Z
translate from https://stackoverflow.com:/questions/2673855/java-equivalent-of-cs-verbatim-strings-with