¿Puedo escapar de llaves en un MessageFormat java?
escaping (5)
Quiero mostrar algunas llaves en un MessageFormat java. Por ejemplo, sé que lo siguiente no funciona:
MessageFormat.format(" public {0} get{1}() {return {2};}/n/n", type, upperCamel, lowerCamel);
¿Hay alguna forma de escapar de los tirantes que rodean "return {2}"?
Guau. ¡Sorpresa! La documentación para MessageFormat conoce la respuesta:
Dentro de una cadena ,
"''''"representa una comilla simple. Un QuotedString puede contener caracteres arbitrarios excepto comillas simples; las comillas simples que rodean se eliminan. Un UnquotedString puede contener caracteres arbitrarios, excepto comillas simples y corchetes a la izquierda. Por lo tanto, una cadena que debe dar como resultado el mensaje con formato"''{0}''"se puede escribir como"''''''{''0}''''"o"''''''{0}''''''".
Puede ponerlos dentro de comillas simples, por ejemplo
''{''return {2};''}''
Vea here para más detalles.
Utilice comillas simples:
MessageFormat.format(" public {0} get{1}() ''{''return {2};''}''/n/n",
type, upperCamel, lowerCamel);
Si desea utilizar realmente una sola cita, solo doble. El MessageFormat da este ejemplo un tanto complicado:
Por lo tanto, una cadena que debe dar como resultado el mensaje con formato
"''{0}''"se puede escribir como"''''''{''0}''''" or "''''''{0}''''''".
Esto es '''' para una sola cita, luego ''{'' para una llave de escape, luego 0 , ''}'' para la llave de cierre y '''' para la cita de cierre.
puede utilizar esta expresión regular con Pearl o cualquier otro lenguaje para escapar de los corchetes y las comillas simples (x27). No toca ningún marcador de posición, por ejemplo, {0} : bash echo "# ''single'' quote test /n/n public {0} get{1}() {return {2};}/n/n" | perl -pe ''s//x27//x27/x27/g; s//{([^0-9])//x27/{/x27$1/g; s/([^0-9])/}/$1/x27/}/x27/g'' bash echo "# ''single'' quote test /n/n public {0} get{1}() {return {2};}/n/n" | perl -pe ''s//x27//x27/x27/g; s//{([^0-9])//x27/{/x27$1/g; s/([^0-9])/}/$1/x27/}/x27/g''
System.out.println(MessageFormat.format("I want to see ticks and curly braces around ''''''{''{0}''}''''''", "this"));