Je veux sortir des accolades dans un Java MessageFormat. Par exemple, je sais que ce qui suit ne fonctionne pas:
MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);
Est-il possible d’échapper aux accolades entourant “return {2}”?
Vous pouvez les mettre entre guillemets simples, par exemple
'{'return {2};'}'
Voir ici pour plus de détails.
Sensationnel. Surprise! La documentation de MessageFormat connaît la réponse:
Dans une chaîne ,
"''"
représente un seul devis. Un QuotedSsortingng peut contenir des caractères arbitraires à l’exception des guillemets simples; les guillemets simples environnants sont supprimés. Une chaîne UnquotedSsortingng peut contenir des caractères arbitraires, à l’exception des guillemets simples et des accolades gauches. Ainsi, une chaîne qui doit donner lieu au message formaté"'{0}'"
peut être écrite comme"'''{'0}''"
ou"'''{0}'''"
.
Utilisez des guillemets simples:
MessageFormat.format(" public {0} get{1}() '{'return {2};'}'\n\n", type, upperCamel, lowerCamel);
Si vous souhaitez réellement utiliser un seul devis, doublez-le. Le JavaDoc pour MessageFormat
donne cet exemple un peu compliqué:
Ainsi, une chaîne qui doit donner lieu au message formaté
"'{0}'"
peut être écrite comme"'''{'0}''" or "'''{0}'''"
.
Ceci est ''
pour une citation unique, puis '{'
pour une accolade échappée, puis 0
, '}'
pour l’accolade fermante et ''
pour la citation finale.
System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));