MessageFormat Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
MessageFormat fournit un moyen de produire des messages concaténés de manière neutre en langage.
[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
- Héritage
- Attributs
Remarques
MessageFormat fournit un moyen de produire des messages concaténés de manière neutre en langage. Utilisez cette option pour construire des messages affichés pour les utilisateurs finaux.
MessageFormat prend un ensemble d’objets, les met en forme, puis insère les chaînes mises en forme dans le modèle aux emplacements appropriés.
<
>strong Remarque :</strong>MessageFormat diffère des autres Format classes dans lesquelles vous créez un MessageFormat objet avec l’un de ses constructeurs (et non avec une getInstance méthode de fabrique de style). Les méthodes de fabrique ne sont pas nécessaires, car MessageFormat elle-même n’implémente pas de comportement spécifique aux paramètres régionaux. Tout comportement spécifique aux paramètres régionaux est défini par le modèle que vous fournissez ainsi que les sous-formats utilisés pour les arguments insérés.
<h2>"patterns"Patterns">Patterns and Their Interpretation</h2>
MessageFormat utilise des modèles de la forme suivante : <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>
Dans une chaîne, une paire de guillemets simples peut être utilisée pour citer des caractères arbitraires à l’exception des guillemets simples. Par exemple, la chaîne de modèle représente la chaîne "'{0}'""{0}", et non un FormatElement. Une citation unique doit être représentée par des guillemets simples doublés '' dans une chaîne. Par exemple, la chaîne "'{''}'" de modèle est interprétée comme une séquence de '{ (début de guillemets et d’accolades gauche), '' (guillemet unique) et }' (accolade droite et fin de guillemets), <em>not</em>'{' et '}' (entre guillemets gauche et accolades droite) : représentant la chaîne"{'}", <em>not</em>"{}".
Un SubformatPattern est interprété par ses sous-formats correspondants et les règles de modèle dépendantes du sous-format s’appliquent. Par exemple, la chaîne "{1,number,<u>$'#',##</u>}" de modèle (SubformatPattern avec trait de soulignement) produit un format de nombre avec le signe dièse, avec un résultat tel que : "$#31,45". Pour plus d’informations, reportez-vous à chaque Format sous-classe.
Toute citation sans correspondance est traitée comme fermée à la fin du modèle donné. Par exemple, la chaîne "'{0de modèle « } est traitée comme un modèle "'{0'"}.
Toutes les accolades dans un modèle nonquoé doivent être équilibrées. Par exemple, "ab {0} de" et "ab '}' de" sont des modèles valides, mais "ab {0'}' de", "ab } de" et "''{''" ne le sont pas.
<dl><dt><b>Warning :</b><dd>Les règles d’utilisation de guillemets dans les modèles de format de message ont malheureusement montré qu’il était quelque peu déroutant. En particulier, il n’est pas toujours évident pour les localiseurs si des guillemets simples doivent être doublés ou non. Veillez à informer les localiseurs sur les règles et à les indiquer (par exemple, en utilisant des commentaires dans des fichiers sources du groupe de ressources) par lesquels les chaînes seront traitées MessageFormat. Notez que les localiseurs peuvent avoir besoin d’utiliser des guillemets simples dans des chaînes traduites où la version d’origine ne les possède pas.
</dl>
La valeur ArgumentIndex est un entier non négatif écrit à l’aide des '0' chiffres, '9'et représente un index dans le arguments tableau transmis aux format méthodes ou au tableau de résultats retourné par les parse méthodes.
Les valeurs FormatType et FormatStyle sont utilisées pour créer une Format instance pour l’élément de format. Le tableau suivant montre comment les valeurs sont mappées aux Format instances. Les combinaisons non affichées dans le tableau ne sont pas valides. Un SubformatPattern doit être une chaîne de modèle valide pour la Format sous-classe utilisée.
<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 »>(aucun)<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">(none)<td>NumberFormat#getInstance(Locale) NumberFormat.getInstance(getLocale())<tr><th scope="row » style="text-weight : normal">integer<td>NumberFormat#getIntegerInstance(Locale) NumberFormat.getIntegerInstance(getLocale())<tr><th scope="row » style="text-weight : normal"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">SubformatPattern <td>newDecimalFormat#DecimalFormat(String,DecimalFormatSymbols) DecimalFormat(subformatPattern,DecimalFormatSymbols#getInstance(Locale) DecimalFormatSymbols.getInstance(getLocale()))<tr><th scope="row » style="text-weight : normal » rowspan=6>date<th scope="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"td>medium<>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(trDateFormat#DEFAULT, getLocale())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">td<>newSimpleDateFormat#SimpleDateFormat(String,Locale) SimpleDateFormat(subformatPattern, getLocale())tr<>th scope="row » style="text-weight : normal » rowspan=6<>timeth 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>
<Informations> d’utilisation h3</h3>
Voici quelques exemples d’utilisation. Dans les programmes internationaux réels, le modèle de format de message et d’autres chaînes statiques seront bien sûr obtenus à partir d’offres groupées de ressources. D’autres paramètres seront déterminés dynamiquement au moment de l’exécution.
Le premier exemple utilise la méthode MessageFormat.formatstatique, qui crée en interne une MessageFormat utilisation unique : <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 sortie est : <blockquote>
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
</blockquote>
L’exemple suivant crée une MessageFormat instance qui peut être utilisée à plusieurs reprises : <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 sortie avec des valeurs différentes pour 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>
Pour des modèles plus sophistiqués, vous pouvez utiliser un pour produire des ChoiceFormat formes correctes pour le singulier et le pluriel : <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 sortie avec des valeurs différentes pour fileCount: <blockquote>
The disk "MyDisk" contains no files.
The disk "MyDisk" contains one file.
The disk "MyDisk" contains 1,273 files.
</blockquote>
Vous pouvez créer le ChoiceFormat programme, comme dans l’exemple ci-dessus, ou à l’aide d’un modèle. Si vous souhaitez plus d’informations, consultez ChoiceFormat.
<blockquote>
{@code
form.applyPattern(
"There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");
}
</blockquote>
<
>strong Remarque :</strong> Comme nous le voyons ci-dessus, la chaîne produite par un ChoiceFormat in MessageFormat est traitée comme spéciale ; les occurrences de « { » sont utilisées pour indiquer les sous-formats et provoquer la récursivité. Si vous créez à la fois un MessageFormat format et ChoiceFormat par programmation (au lieu d’utiliser les modèles de chaîne), veillez à ne pas produire un format qui se répète sur lui-même, ce qui provoquera une boucle infinie.
Lorsqu’un seul argument est analysé plusieurs fois dans la chaîne, la dernière correspondance est le résultat final de l’analyse. Par exemple, <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>
De même, l’analyse avec un MessageFormat objet à l’aide de modèles contenant plusieurs occurrences du même argument retourne la dernière correspondance. Par exemple, <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>"synchronisation">Synchronisation</h3>
Les formats de message ne sont pas synchronisés. Il est recommandé de créer des instances de format distinctes pour chaque thread. Si plusieurs threads accèdent simultanément à un format, il doit être synchronisé en externe.
Ajouté dans la version 1.1.
Java documentation pour java.text.MessageFormat.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime. |
| MessageFormat(String, Locale) |
Construit un MessageFormat pour les paramètres régionaux et le modèle spécifiés. |
| MessageFormat(String) |
Construit un MessageFormat pour les paramètres régionaux par défaut |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Locale |
Obtient les paramètres régionaux utilisés lors de la création ou de la comparaison de sous-formats. -ou- Définit les paramètres régionaux à utiliser lors de la création ou de la comparaison de sous-formats. |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
Méthodes
| Nom | Description |
|---|---|
| ApplyPattern(String) |
Définit le modèle utilisé par ce format de message. |
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| Format(Object, StringBuffer, FieldPosition) |
Met en forme un tableau d’objets et ajoute le |
| Format(Object) |
Met en forme un objet pour produire une chaîne. (Hérité de _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Met en forme un tableau d’objets et ajoute le |
| Format(String, Object[]) |
Met en forme un tableau d’objets et ajoute le <modèle de code>MessageFormat</code>, avec des éléments de format remplacés par les objets mis en forme, au code<fourni >StringBuffer</code>. |
| FormatToCharacterIterator(Object) |
Met en forme un objet produisant un |
| GetFormats() |
Obtient les formats utilisés pour les éléments de format dans la chaîne de modèle définie précédemment. |
| GetFormatsByArgumentIndex() |
Obtient les formats utilisés pour les valeurs passées dans |
| GetHashCode() |
Retourne une valeur de code de hachage pour l'objet. (Hérité de Object) |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| Parse(String, ParsePosition) |
Analyse la chaîne. |
| Parse(String) |
Analyse le texte à partir du début de la chaîne donnée pour produire un tableau d’objets. |
| ParseObject(String, ParsePosition) |
Analyse le texte d’une chaîne pour produire un tableau d’objets. |
| ParseObject(String) |
Analyse le texte à partir du début de la chaîne donnée pour produire un objet. (Hérité de _Format) |
| SetFormat(Int32, _Format) |
Définit le format à utiliser pour l’élément de format avec l’index d’élément de format donné dans la chaîne de modèle précédemment définie. |
| SetFormatByArgumentIndex(Int32, _Format) |
Définit le format à utiliser pour les éléments de format dans la chaîne de modèle définie précédemment qui utilise l’index d’argument donné. |
| SetFormats(_Format[]) |
Définit les formats à utiliser pour les éléments de format dans la chaîne de modèle définie précédemment. |
| SetFormatsByArgumentIndex(_Format[]) |
Définit les formats à utiliser pour les valeurs passées dans |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToPattern() |
Retourne un modèle représentant l’état actuel du format de message. |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |