[java] @가있는 C #의 축어 문자열에 해당하는 Java

빠른 질문. Java의 문자열에 적용된 @와 동등한 것이 있습니까?

예를 들어 @"c:\afolder\afile"C #에서 할 수 있으며 처리 할 때 이스케이프 문자를 무시하도록 할 수 "c:\\afolder\\aFile"있습니다. Java에 상응하는 것이 있습니까?

hmmm : stackoverflow가 나에게 이스케이프 .. lol. 두 번째 예는 다음과 같아야합니다.

c 🙁 이중 백 슬래시) afolder (이중 백 슬래시) aFile



답변

아니 . 문자열을 이스케이프 / 외부화하는 것이 유일한 선택입니다.


답변

아니요, Java에는 축어 문자열 리터럴 이 없습니다 .

당신은 자바처럼 (그리고 자바 VM 기반) 언어하려면 수행을 하지만, 당신이보고 할 수 있습니다 그루비문자열 리터럴의 다양한 형태 .


답변

Kent와 Jon이 말했듯이, 없습니다.

나는 당신의 특별한 경우가 있다고하더라도 일회성 프로그램 이상을 가정하는 일반적인 경우에는 나쁜 생각이 될 것이라고 지적하기 위해 대답하고 있습니다.

Java 프로그램은 Windows보다 더 많은 플랫폼에서 실행되며 다른 플랫폼에는 다른 파일 구분 기호가 있습니다. 따라서 이스케이프 된 백 슬래시를 처리하는 대신 특정 예제를 처리하는 올바른 방법은 파일 구분 기호 속성을 가져 오는 것입니다.


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

플랫폼뿐만 아니라 “afile”이 실제 파일 시스템 루트에 상대적인지 사용자의 홈 디렉토리에 상대적인지 여부에 따라 일부 정책을 기반으로 ROOTDIR을 별도로 만들었습니다.

하지만 파일 구분자 속성을 사용하면 프로그램을 더 널리 사용할 수 있습니다. 더 많은 일입니까? 예. Wanda Sykes는 “하지만 그만한 가치가 있습니다”라고 말합니다.


답변

현재 Java에서는 지원되지 않지만 향후 릴리스에서 사용할 수 있습니다. 2018/01/23에 JEP 326 : Raw String Literals 가 생성 되었습니다.

https://bugs.openjdk.java.net/browse/JDK-8196004 에서 진행 상황을 확인하세요.

아마도 언젠가는 다음과 같이 할 수있을 것입니다.

`c:\afolder\afile`

업데이트 : JDK에서 삭제하도록 제안 된 JEP 12 : 326 : 원시 문자열 리터럴 (미리보기)
여기에서 근거를 읽을 수 있습니다. http://mail.openjdk.java.net/pipermail/jdk-dev/2018-December/002402.html

자세한 내용은 여기 https://bugs.openjdk.java.net/browse/JDK-8215682

결론 : 가까운 장래에 Java에는 축어 문자열이 없을 것입니다. 그리고 그것이 나타날지라도 오히려“가 아닐 것입니다.


답변