java resourcebundle

java message format



Formatee un mensaje usando MessageFormat.format() en Java (5)

He almacenado algunos mensajes en un paquete de recursos. Estoy tratando de formatear estos mensajes de la siguiente manera.

import java.text.MessageFormat; String text = MessageFormat.format("You''re about to delete {0} rows.", 5); System.out.println(text);

Supongamos que el primer parámetro, es decir, el mensaje real, se almacena en un archivo de propiedades que de alguna manera se recupera.

El segundo parámetro, es decir, 5 es un valor dinámico y debe colocarse en el marcador de posición {0} lo que no ocurre. La siguiente línea imprime,

Está a punto de eliminar {0} filas.

El marcador de posición no se reemplaza con el parámetro real.

Es el apóstrofo aquí - You''re . He tratado de escapar de la forma habitual como si no hubiera funcionado. ¿Qué cambios son necesarios para que funcione?


Agregue un apóstrofo adicional '' a la String patrón de MessageFormat para asegurarse '' que se muestre el carácter ''

String text = java.text.MessageFormat.format("You''''re about to delete {0} rows.", 5); ^

Un apóstrofo (también conocido como comilla simple ) en un patrón de MessageFormat inicia una cadena entre comillas y no se interpreta por sí solo. Desde el javadoc

Una sola cita en sí misma debe estar representada por comillas dobles duplicadas '''' a lo largo de una cadena.

El String You//'re equivale a agregar un carácter de barra diagonal inversa a String por lo que la única diferencia será que You/re se producirá en lugar de Youre . (antes de que se aplique la solución de doble comilla)


Deberá usar doble apóstrofo en lugar de solo en "Usted", por ejemplo:

String text = java.text.MessageFormat.format("You''''re about to delete {0} rows.", 5); System.out.println(text);


El uso de un apóstrofo '' (Unicode: /u2019 ) en lugar de una comilla simple '' solucionó el problema sin duplicar el /' .


Para todos los que tengan problemas con Android en string.xml, use / ''/' en lugar de comillas simples.


Solo asegúrate de haber usado el doble apóstrofo ('''')

String text = java.text.MessageFormat.format("You''''re about to delete {0} rows.", 5); System.out.println(text);

Editar:

Dentro de una cadena, un par de comillas simples se puede utilizar para citar cualquier carácter arbitrario, excepto comillas simples. Por ejemplo, la cadena de patrón "''{0}''" representa la cadena "{0}", no un FormatElement. ...

Cualquier cita sin correspondencia se trata como cerrada al final del patrón dado. Por ejemplo, la cadena de patrón " '' {0}'' ''se trata como el patrón'' '' {0} '' '' ''.

Fuente javadoc