web-dev-qa-db-fra.com

Comment échapper une chaîne en Java?

Je lis un fichier source en Java, mais quand je l'imprime (sysout), les caractères échappés ne sont plus échappés. Comment puis-je échapper des personnages comme \n et \t dans une chaîne en Java?

29
Marius

Vous devez utiliser la classe StringEscapeUtils de Apache Commons Text (vous pouvez également trouver la classe dans Apache Commons Lang3 mais celle-ci est déconseillée). Vous constaterez qu'il existe de nombreuses autres offres dans Apache Commons qui pourraient être utiles pour d'autres problèmes que vous rencontrez dans le développement Java, afin de ne pas réinventer la roue.

L'appel spécifique que vous voulez a à voir avec "Java échappant"; l'appel d'API est StringEscapeUtils.escapeJava() . Par exemple:

System.out.println(StringEscapeUtils.escapeJava("Hello\r\n\tW\"o\"rld\n")

imprimerait:

Hello\r\n\tW\"o\"rld\n

Il existe également de nombreux autres utilitaires d'échappement dans cette bibliothèque. Vous pouvez trouver Texte Apache Commons dans Maven Central et vous l'ajouteriez à votre projet Maven comme ceci:

<dependency>
    <groupId>org.Apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.3</version>
</dependency>

et au cas où vous utilisez Gradle:

compile "org.Apache.commons:commons-text:1.3"
30
schematic

StringEscapeUtils est bon pour les opérations liées aux chaînes

5
Gopi

En utilisant:

\\n et \\t

Certains caractères précédés d'une barre oblique inverse (\) forme une séquence d'échappement et a une signification particulière pour le compilateur. Donc dans votre cas \n et \t sont traités comme spéciaux (nouvelle ligne et tabulation respectivement). Nous devons donc échapper à la barre oblique inverse pour que n et t soient traités littéralement.

5
codaddict

Donné String s,

s = s.replace("\\", "\\\\");

Remplace tous les \ avec \\.

3