Supposons que vous ayez un littéral String avec beaucoup de guillemets à l'intérieur. Vous pourriez tous leur échapper, mais c'est pénible et difficile à lire.
Dans certaines langues, vous pouvez simplement faire ceci:
foo = '"Hello, World"';
En Java, cependant, ''
est utilisé pour char
s, vous ne pouvez donc pas l'utiliser pour String
s de cette façon. Certaines langues ont une syntaxe pour contourner ce problème. Par exemple, en python, vous pouvez faire ceci:
"""A pretty "convenient" string"""
Java a-t-il quelque chose de similaire?
System.out.println(mapperObj.writeValueAsString(mapperObj.readValue(str, Object.class)));
Réponses:
La réponse est non, et la preuve réside dans la spécification du langage Java :
Comme vous pouvez le voir, un
StringLiteral
peut simplement être lié par"
et ne peut pas contenir de caractère spécial sans échappement.A noter: vous pouvez intégrer Groovy à l' intérieur de votre projet, cela va étendre la syntaxe de Java vous permettant d'utiliser
'''multi line string '''
,' "string with single quotes" '
et aussi"string with ${variable}"
.la source
Non, et j'ai toujours été ennuyé par le manque de syntaxes de chaînes littérales différentes en Java.
Voici une astuce que j'ai utilisée de temps en temps:
Je fais principalement quelque chose comme ça pour un champ statique. Comme il est statique, le code de remplacement de chaîne est appelé une fois, lors de l'initialisation de la classe. Ainsi, la pénalité des performances d'exécution est pratiquement inexistante, et cela rend le code considérablement plus lisible.
la source
Mise à jour de décembre 2018 (12 mois plus tard):
Les littéraux de chaîne bruts (qui sont sur la liste orange ) ne parviendront pas au JDK 12.
Voir les critiques ici .
Il pourrait y avoir dans une future version de Java (10 ou plus).
Voir JEPS 8196004 de janvier 2018: ( "JEP" est le "JDK Enhancement Program" )
Donc au lieu de:
Vous pourrez taper:
Soigné!
Mais ce n'est encore qu'un brouillon : il devra être publié, soumis, candidat et financé, avant d'être terminé et de devenir le prochain JDK.
la source
Réponse simple: non.
Pour les chaînes plus longues qui doivent être échappées, je les lis généralement à partir d'une ressource externe.
la source
vous pouvez également utiliser StringEscapeUtils à partir d'apache commons
MISE À JOUR : Si quelqu'un est intéressé par quelques exemples, voici un lien utile: https://dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils
la source
String
s, donc aucun moyen d'avoir une valeur bien formatée dans votre code. Vous pouvez probablement utiliser ces méthodes pour lire un fichier dans un fichierString
, mais je ne pense pas que ce soit la question ici.Ce qui suit semble fonctionner pour moi:
Je pense que parce que char est le type de variable primitif pour String, les chaînes et les caractères peuvent être combinés (au moins le compilateur eclipse ne semble pas se plaindre).
la source
Si vous souhaitez échapper
'
ou"
dans votre chaîne, vous pouvez utiliser le code suivant:la source