簡単な質問。Javaの文字列に適用される@に相当するものはありますか?
たとえば@"c:\afolder\afile"
、C#で実行して、処理時にエスケープ文字を無視するようにすることができます"c:\\afolder\\aFile"
。Javaに相当するものはありますか?
うーん:stackoverflowは私に逃げています..笑。2番目の例は次のようになります。
c:(double-backslash)afolder(double-backslash)aFile
いいえ。文字列をエスケープ/外部化することが唯一の選択肢です。
いいえ、Javaには逐語的な文字列リテラルはありません。
ただし、 Javaに似た(およびJava-VMベースの)言語が必要な場合は、さまざまな形式の文字列リテラルを持つGroovyを検討することをお勧めします。
ケントとジョンが言ったように、ありません。
私は、たとえあったとしても、あなたの特定のケースでは、複数のプログラムを想定している一般的なケースでは悪い考えであることを指摘するためだけに答えています。
Javaプログラムは、Windowsだけでなく多くのプラットフォームで実行され、他のプラットフォームではファイル区切り文字が異なります。したがって、エスケープされた円記号を処理する代わりに、特定の例を処理する正しい方法は、ファイル区切り文字プロパティを取得することです。
String sep = System.getProperty("file.separator");
String filename = ROOTDIR + sep + "folder" + sep + "afile";
プラットフォームだけでなく、「ファイル」を実際のファイルシステムルートに対して相対的なものにするか、ユーザーのホームディレクトリに対して相対的なものにするかなど、ポリシーに基づいてROOTDIRを個別に作成した場合。
しかし、間違いなく、ファイル区切り文字プロパティを使用すると、プログラムがより広く使用できるようになります。それはもっと仕事ですか?はい。ワンダサイクスが言うように、「しかし、それは価値があります」。
現在、Javaではサポートされていませんが、将来のリリースで利用できるようになる可能性があります。2018/01/23にJEP326 : RawStringLiteralsが作成されました
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には逐語的な文字列はありません。そして、それが表示されたとしても、それはむしろ「ではありません。
Javaは2019年9月からそれを持っていますが、それは異なるsintaxを使用していました。「」」(3つの二重引用符)。
*最近のJavaバージョン(プレビューでは+13、本番環境では+15)では、Javaテキストブロックを使用してほぼ同等の機能を実現できます。
String html = """
<xml>
<ody>
<pan>example xml </pan>
</ody>
</xml>""";
https://docs.oracle.com/en/java/javase/13/text_blocks/index.htmlのドキュメント