Javaでソースファイルを読み込んでいますが、それを印刷すると(sysout)、エスケープされた文字がエスケープされなくなりました。 Javaの文字列で\n
や\t
などの文字をエスケープするにはどうすればよいですか?
StringEscapeUtils
クラスを Apache Commons Text から使用する必要があります(Apache Commons Lang3でもクラスを見つけることができますが、非推奨です)。 Apache Commonsには、Java開発で発生する他の問題に役立つ可能性のある他のオファリングがたくさんあるので、車輪を再発明しないようにすることがわかります。
必要な特定の呼び出しは、「Javaエスケープ」に関係しています。 API呼び出しは StringEscapeUtils.escapeJava()
です。例えば:
System.out.println(StringEscapeUtils.escapeJava("Hello\r\n\tW\"o\"rld\n")
印刷します:
Hello\r\n\tW\"o\"rld\n
そのライブラリには、他にもたくさんのエスケープユーティリティがあります。 Maven CentralのApache Commons Text を見つけて、次のようにMavenプロジェクトに追加します。
<dependency>
<groupId>org.Apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.3</version>
</dependency>
gradleを使用している場合:
compile "org.Apache.commons:commons-text:1.3"
StringEscapeUtils は、文字列関連の操作に適しています
使用:
\\n
および\\t
バックスラッシュ(\
)エスケープシーケンスを形成し、コンパイラにとって特別な意味を持ちます。だからあなたのケースでは\n
および\t
は特別なものとして扱われます(それぞれ改行とタブ)。したがって、n
およびt
を文字どおりに処理するには、バックスラッシュをエスケープする必要があります。
String s
の場合、
s = s.replace("\\", "\\\\");
すべての\
を\\
に置き換えます。