MessageFormat Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
MessageFormat proporciona un medio para generar mensajes concatenados de forma independiente del lenguaje.
[Android.Runtime.Register("java/text/MessageFormat", DoNotGenerateAcw=true)]
public class MessageFormat : Java.Text._Format
[<Android.Runtime.Register("java/text/MessageFormat", DoNotGenerateAcw=true)>]
type MessageFormat = class
inherit _Format
- Herencia
- Atributos
Comentarios
MessageFormat proporciona un medio para generar mensajes concatenados de forma independiente del lenguaje. Úselo para construir mensajes mostrados para los usuarios finales.
MessageFormat toma un conjunto de objetos, los da formato y, a continuación, inserta las cadenas con formato en el patrón en los lugares adecuados.
<strong>Note:</strong>MessageFormat difiere de las otras Format clases en que se crea un MessageFormat objeto con uno de sus constructores (no con un getInstance método de generador de estilo). Los métodos de fábrica no son necesarios porque MessageFormat no implementa ningún comportamiento específico de la configuración regional. Cualquier comportamiento específico de la configuración regional se define mediante el patrón que se proporciona, así como los subformatos usados para los argumentos insertados.
<h2>"patterns">Patterns and Their Interpretation</h2>
MessageFormat usa patrones de la forma siguiente: <blockquote>
<i>MessageFormatPattern:</i>
<i>String</i>
<i>MessageFormatPattern</i> <i>FormatElement</i> <i>String</i>
<i>FormatElement:</i>
{ <i>ArgumentIndex</i> }
{ <i>ArgumentIndex</i> , <i>FormatType</i> }
{ <i>ArgumentIndex</i> , <i>FormatType</i> , <i>FormatStyle</i> }
<i>FormatType: one of </i>
number date time choice
<i>FormatStyle:</i>
short
medium
long
full
integer
currency
percent
<i>SubformatPattern</i>
</blockquote>
Dentro de una cadena, se puede usar un par de comillas simples para comillas arbitrarias excepto comillas simples. Por ejemplo, la cadena "'{0}'" de patrón representa la cadena "{0}", no un FormatElement. Una sola comilla debe representarse mediante comillas '' simples duplicadas a lo largo de una cadena. Por ejemplo, la cadena "'{''}'" de patrón se interpreta como una secuencia de '{ (inicio de comillas y llave izquierda), '' (una sola comilla) y }' (una llave derecha y un final de comillas), <em>not</em>'{' y '}' (entre comillas izquierda y derecha): que representa la cadena "{'}", <em>not</em>"{}".
Una subformatPattern se interpreta mediante su subformato correspondiente y se aplican las reglas de patrón dependientes del subformato. Por ejemplo, la cadena "{1,number,<u>$'#',##</u>}" de patrón (SubformatPattern con subrayado) generará un formato numérico con el signo de libra entre comillas, con un resultado como: "$#31,45". Consulte la documentación de cada Format subclase para obtener más información.
Las comillas no coincidentes se tratan como cerradas al final del patrón especificado. Por ejemplo, la cadena "'{0de patrón "} se trata como patrón "'{0'"}.
Las llaves dentro de un patrón sin comprimir deben equilibrarse. Por ejemplo, "ab {0} de" y "ab '}' de" son patrones válidos, pero "ab {0'}' de", "ab } de" y "''{''" no.
<dl><dt><b>Warning:</b><dd>Las reglas para usar comillas dentro de los patrones de formato de mensaje desafortunadamente han demostrado ser algo confusos. En concreto, no siempre es obvio localizar los localizadores si es necesario duplicar o no comillas simples. Asegúrese de informar a los localizadores sobre las reglas y indicarles (por ejemplo, mediante comentarios en los archivos de origen del paquete de recursos) qué cadenas procesarán MessageFormat. Tenga en cuenta que los localizadores pueden necesitar usar comillas simples en cadenas traducidas en las que la versión original no las tiene.
</Dl>
El valor ArgumentIndex es un entero no negativo escrito mediante los dígitos '0' a través '9'de y representa un índice en la arguments matriz pasada a los format métodos o la matriz de resultados devuelta por los parse métodos.
Los valores FormatType y FormatStyle se usan para crear una Format instancia para el elemento de formato. En la tabla siguiente se muestra cómo los valores se asignan a Format las instancias. Las combinaciones que no se muestran en la tabla son ilegales. Un SubformatPattern debe ser una cadena de patrón válida para la Format subclase usada.
<table class="plain"><caption style="display:none">Shows how FormatType and FormatStyle values map to Format instances</caption><thead><tr><th scope="col" class="TableHeadingColor">FormatType <th scope="col" class="TableHeadingColor">FormatStyle <th scope="col" class="TableHeadingColor">Subformat Created </thead><tbody><tr><th scope="row" style="text-weight: normal">(ninguno)<th scope="row" style="text-weight: normal"(>none)<td>null<tr><th scope="row" style="text-weight: normal" rowspan=5>number<th scope="row" style="text-weight: normal">td tr<>th scope="row" style="text-weight: normal"NumberFormat#getInstance(Locale) NumberFormat.getInstance(getLocale())<td><>integertr<>th scope="row" style="text-weight: normal"NumberFormat#getIntegerInstance(Locale) NumberFormat.getIntegerInstance(getLocale())<>td<>currency<>NumberFormat#getCurrencyInstance(Locale) NumberFormat.getCurrencyInstance(getLocale())<tr><th scope="row" style="text-weight: normal">percent<td>NumberFormat#getPercentInstance(Locale) NumberFormat.getPercentInstance(getLocale())<tr><th scope="row" style="text-weight: normal">td<>newDecimalFormat#DecimalFormat(String,DecimalFormatSymbols) DecimalFormat(subformatPattern,DecimalFormatSymbols#getInstance(Locale) DecimalFormatSymbols.getInstance(getLocale()))tr<>th scope="row" style="text-weight: normal" rowspan=6th<>datescope="row"style="text-weight: normal"<>(none)<td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#DEFAULT, getLocale())<tr><th scope="row" style="text-weight: normal">short<td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#SHORT, getLocale())<tr><th scope="row" style="text-weight: normal">medium<td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#DEFAULT, getLocale())<tr><th scope="row" style="text-weight: normal">long<td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#LONG, getLocale())<tr><th scope="row" style="text-weight: normal">full<td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#FULL, getLocale())<tr th>< scope="row" style="text-weight: normal">SubformatPattern<td>newSimpleDateFormat#SimpleDateFormat(String,Locale) SimpleDateFormat(subformatPattern, getLocale())<tr><th scope="row" style="text-weight: normal" rowspan=6>time<th scope="row" style="text-weight: normal">(none)<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#DEFAULT, getLocale())<tr><th scope="row" style="text-weight: normal">short<td tr>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#SHORT, getLocale())<><th scope="row" style="text-weight: normal">medium<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#DEFAULT, getLocale())<tr><th scope="row" style="text-weight: normal">long<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#LONG, getLocale())<tr><th scope="row" style="text-weight: normal">full<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#FULL, getLocale())<tr><th scope="row" style="text-weight: normal">SubformatPattern <td>newSimpleDateFormat#SimpleDateFormat(String,Locale) SimpleDateFormat(subformatPattern, getLocale())<tr><th scope="row" style="text-weight: normal">choice<th scope="row" style="text-weight: normal">SubformatPattern <td>newChoiceFormat#ChoiceFormat(String) ChoiceFormat(subformatPattern)</tbody></table>
<h3>Información de< uso/h3>
Estos son algunos ejemplos de uso. En programas internacionalizados reales, el patrón de formato de mensaje y otras cadenas estáticas se obtendrán, por supuesto, de los conjuntos de recursos. Otros parámetros se determinarán dinámicamente en tiempo de ejecución.
En el primer ejemplo se usa el método MessageFormat.formatestático , que crea internamente un para un MessageFormat uso único: <blockquote>
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
planet, new Date(), event);
</blockquote> La salida es: <blockquote>
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
</blockquote>
En el ejemplo siguiente se crea una MessageFormat instancia que se puede usar repetidamente: <blockquote>
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {new Long(fileCount), diskName};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
</blockquote> La salida con valores diferentes para fileCount: <blockquote>
The disk "MyDisk" contains 0 file(s).
The disk "MyDisk" contains 1 file(s).
The disk "MyDisk" contains 1,273 file(s).
</blockquote>
Para patrones más sofisticados, puede usar para ChoiceFormat generar formas correctas para singulares y plurales: <blockquote>
MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}.");
double[] filelimits = {0,1,2};
String[] filepart = {"no files","one file","{0,number} files"};
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
form.setFormatByArgumentIndex(0, fileform);
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {new Long(fileCount), diskName};
System.out.println(form.format(testArgs));
</blockquote> La salida con valores diferentes para fileCount: <blockquote>
The disk "MyDisk" contains no files.
The disk "MyDisk" contains one file.
The disk "MyDisk" contains 1,273 files.
</blockquote>
Puede crear mediante ChoiceFormat programación, como en el ejemplo anterior, o mediante un patrón . Consulte ChoiceFormat para obtener más información.
<blockquote>
{@code
form.applyPattern(
"There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");
}
</blockquote>
<strong>Note:</strong> As we see above, the string producido por a ChoiceFormat in MessageFormat is treated as special; occurrences of '{' are used to indicate subformats, and cause recursion. Si crea y MessageFormatChoiceFormat mediante programación (en lugar de usar los patrones de cadena), tenga cuidado de no generar un formato que recurse en sí mismo, lo que provocará un bucle infinito.
Cuando se analiza un único argumento más de una vez en la cadena, la última coincidencia será el resultado final del análisis. Por ejemplo, <blockquote>
MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
Object[] objs = {new Double(3.1415)};
String result = mf.format( objs );
// result now equals "3.14, 3.1"
objs = null;
objs = mf.parse(result, new ParsePosition(0));
// objs now equals {new Double(3.1)}
</blockquote>
Del mismo modo, el análisis con un MessageFormat objeto mediante patrones que contienen varias apariciones del mismo argumento devolvería la última coincidencia. Por ejemplo, <blockquote>
MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
String forParsing = "x, y, z";
Object[] objs = mf.parse(forParsing, new ParsePosition(0));
// result now equals {new String("z")}
</blockquote>
<h3>"synchronization">Synchronization</h3>
Los formatos de mensaje no se sincronizan. Se recomienda crear instancias de formato independientes para cada subproceso. Si varios subprocesos acceden a un formato simultáneamente, debe sincronizarse externamente.
Agregado en la versión 1.1.
Java documentación para java.text.MessageFormat.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
| MessageFormat(String, Locale) |
Construye un MessageFormat para la configuración regional y el patrón especificados. |
| MessageFormat(String) |
Construye un MessageFormat para la configuración regional predeterminada |
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Locale |
Obtiene la configuración regional que se usa al crear o comparar subformatos. -o bien- Establece la configuración regional que se va a usar al crear o comparar subformatos. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| ApplyPattern(String) |
Establece el patrón usado por este formato de mensaje. |
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| Format(Object, StringBuffer, FieldPosition) |
Da formato a una matriz de objetos y anexa el |
| Format(Object) |
Da formato a un objeto para generar una cadena. (Heredado de _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Da formato a una matriz de objetos y anexa el |
| Format(String, Object[]) |
Da formato a una matriz de objetos y anexa el <patrón messageFormat>/code< del código>, con elementos de formato reemplazados por los objetos con formato, al <código>proporcionado StringBuffer</code>. |
| FormatToCharacterIterator(Object) |
Da formato a un objeto que genera un |
| GetFormats() |
Obtiene los formatos usados para los elementos de formato de la cadena de patrón establecida anteriormente. |
| GetFormatsByArgumentIndex() |
Obtiene los formatos usados para los valores pasados a |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| Parse(String, ParsePosition) |
Analiza la cadena. |
| Parse(String) |
Analiza el texto desde el principio de la cadena especificada para generar una matriz de objetos. |
| ParseObject(String, ParsePosition) |
Analiza el texto de una cadena para generar una matriz de objetos. |
| ParseObject(String) |
Analiza el texto desde el principio de la cadena especificada para generar un objeto . (Heredado de _Format) |
| SetFormat(Int32, _Format) |
Establece el formato que se va a usar para el elemento de formato con el índice de elemento de formato especificado dentro de la cadena de patrón establecida anteriormente. |
| SetFormatByArgumentIndex(Int32, _Format) |
Establece el formato que se va a usar para los elementos de formato dentro de la cadena de patrón establecida anteriormente que usan el índice de argumento especificado. |
| SetFormats(_Format[]) |
Establece los formatos que se usarán para los elementos de formato de la cadena de patrón establecida anteriormente. |
| SetFormatsByArgumentIndex(_Format[]) |
Establece los formatos que se usarán para los valores pasados a |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToPattern() |
Devuelve un patrón que representa el estado actual del formato de mensaje. |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |