2009-07-27 16 views
51

Chcę wyprowadzić niektóre nawiasy klamrowe w java MessageFormat. Na przykład wiem, że nie działa, co następuje:Czy mogę wyłączyć klamry w java MessageFormat?

MessageFormat.format(" public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel); 

Czy istnieje sposób ucieczki nawiasy otaczające „return {2}”?

Odpowiedz

70

Możesz umieścić je w pojedynczych cudzysłowach, np.

'{'return {2};'}' 

Aby uzyskać więcej informacji, patrz here.

+1

+1 myślałem, że to \ ale "jest prawidłowa –

+0

link nie działa – bigGuy

10

apostrofów:

MessageFormat.format(" public {0} get{1}() '{'return {2};'}'\n\n", 
        type, upperCamel, lowerCamel); 

Jeśli chcesz faktycznie użytku apostrof, po prostu podwoić. JavaDoc for MessageFormat daje to nieco skomplikowany przykład:

Zatem ciąg znaków, który powinien spowodować sformatowany wiadomość "'{0}'" może być napisany jako "'''{'0}''" or "'''{0}'''".

To '' dla pojedynczego środki, następnie '{' dla zbiegłego klamra, następnie 0, '}' za nawiasem zamykającym i '' do zamknięcia cytatu.

15

Wow. Niespodzianka! Dokumentacja dla MessageFormat zna odpowiedź:

obrębie String, "''" reprezentuje apostrof. A może zawierać dowolne znaki z wyjątkiem pojedynczych cudzysłowów; otaczające pojedyncze cytaty są usuwane. An UnikatedString może zawierać dowolne znaki z wyjątkiem pojedynczych cudzysłowów i nawiasów klamrowych. W związku z tym ciąg znaków, który powinien mieć wartość , może spowodować sformatowanie sformatowanego komunikatu: "'{0}'" jako "'''{'0}''" lub "'''{0}'''".

1
System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this")); 
Powiązane problemy