MessageFormat Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.
[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
- Vererbung
- Attribute
Hinweise
MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen. Verwenden Sie diese Funktion, um Nachrichten zu erstellen, die für Endbenutzer angezeigt werden.
MessageFormat verwendet einen Satz von Objekten, formatiert sie und fügt dann die formatierten Zeichenfolgen an den entsprechenden Stellen in das Muster ein.
<strong>Note:</strong>MessageFormat unterscheidet sich von den anderen Format Klassen, in denen Sie ein MessageFormat Objekt mit einem seiner Konstruktoren erstellen (nicht mit einer getInstance Style Factory-Methode). Die Factorymethoden sind nicht erforderlich, da MessageFormat selbst kein gebietsschemaspezifisches Verhalten implementiert wird. Jedes gebietsschemaspezifische Verhalten wird durch das muster definiert, das Sie bereitstellen, sowie die Für eingefügten Argumente verwendeten Unterformate.
<h2>"patterns"Patterns"> and Their Interpretation</h2>
MessageFormat verwendet Muster des folgenden Formulars: <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>
Innerhalb einer Zeichenfolge kann ein Paar einzelner Anführungszeichen verwendet werden, um beliebige Zeichen mit Ausnahme einzelner Anführungszeichen anzuweisen. Beispiel: Musterzeichenfolge stellt "'{0}'"eine Zeichenfolge "{0}" dar, nicht ein FormatElement. Ein einzelnes Anführungszeichen selbst muss durch doppelte einfache Anführungszeichen '' in einer Zeichenfolge dargestellt werden. Beispiel: Musterzeichenfolge "'{''}'" wird als Sequenz von '{ (Anfang der Anführung und einer linken geschweiften geschweiften Klammer), '' (ein einfaches Anführungszeichen) und }' (eine rechte geschweifte Klammer und das Ende der Quotierung), <em>not</em>'{' und '}' (zitierte linke und rechte geschweifte geschweifte Klammern): Zeichenfolge "{'}", <em>not</em>"{}" darstellt.
Ein SubformatPattern wird durch das entsprechende Unterformat interpretiert, und es gelten unterformatabhängige Musterregeln. Beispiel: Musterzeichenfolge "{1,number,<u>$'#',##</u>}" (SubformatPattern mit Unterstreichung) erzeugt ein Zahlenformat mit dem Nummernzeichen, das in Anzeichen steht, z. B.: "$#31,45". Ausführliche Informationen finden Sie in den einzelnen Format Unterklassendokumentationen.
Ein nicht übereinstimmender Anführungszeichen wird am Ende des angegebenen Musters als geschlossen behandelt. Beispiel: Musterzeichenfolge "'{0"}" wird als Muster "'{0'"}" behandelt.
Alle geschweiften geschweiften Klammern innerhalb eines nicht zizierten Musters müssen ausgeglichen werden. Beispielsweise "ab {0} de" sind sie "ab '}' de" gültige Muster, aber "ab {0'}' de""ab } de" nicht"''{''".
<dl><dt><b>Warning:</bd><>Die Regeln für die Verwendung von Anführungszeichen innerhalb von Nachrichtenformatmustern haben leider etwas verwirrend gezeigt. Insbesondere ist es nicht immer offensichtlich, Lokalisierer zu lokalisierern, ob einfache Anführungszeichen verdoppelt werden müssen oder nicht. Informieren Sie lokalisierer über die Regeln, und informieren Sie sie (z. B. mithilfe von Kommentaren in Ressourcenbundlequelldateien), von MessageFormatdenen Zeichenfolgen verarbeitet werden. Beachten Sie, dass Lokalisierer möglicherweise einzelne Anführungszeichen in übersetzten Zeichenfolgen verwenden müssen, in denen die ursprüngliche Version sie nicht enthält.
</dl>
Der ArgumentIndex-Wert ist eine nicht negative ganze Zahl, die mit den Ziffern '0''9'geschrieben wird, und stellt einen Index in das Array dar, das arguments an die format Methoden übergeben wird, oder das Ergebnisarray, das von den parse Methoden zurückgegeben wird.
Die Werte "FormatType" und "FormatStyle " werden verwendet, um eine Format Instanz für das Formatelement zu erstellen. In der folgenden Tabelle wird gezeigt, wie die Werte Instanzen zugeordnet Format werden. Kombinationen, die nicht in der Tabelle angezeigt werden, sind unzulässig. Ein SubformatPattern muss eine gültige Musterzeichenfolge für die Format verwendete Unterklasse sein.
<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">(keine)<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 tr th scope="row" style="text-weight: normal">NumberFormat#getInstance(Locale) NumberFormat.getInstance(getLocale())td<><>trinteger<th scope="row" style="text-weight: normal">NumberFormat#getIntegerInstance(Locale) NumberFormat.getIntegerInstance(getLocale())td tr<><>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">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 tr>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstanceth scope="row" style="text-weight: normal"(DateFormat#DEFAULT, getLocale())td tr<><>short<>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>Nutzungsinformationen</h3>
Hier sind einige Beispiele für die Verwendung. In echten internationalisierten Programmen werden das Nachrichtenformatmuster und andere statische Zeichenfolgen natürlich aus Ressourcenbündeln abgerufen. Andere Parameter werden zur Laufzeit dynamisch bestimmt.
Im ersten Beispiel wird die statische Methode MessageFormat.formatverwendet, die intern eine MessageFormat einmalige Verwendung erstellt: <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> Die Ausgabe lautet: <blockquote>
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
</blockquote>
Im folgenden Beispiel wird eine MessageFormat Instanz erstellt, die wiederholt verwendet werden kann: <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> Die Ausgabe mit unterschiedlichen Werten für 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>
Für anspruchsvollere Muster können Sie eine ChoiceFormat verwenden, um richtige Formen für Singular und Plural zu erzeugen: <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> Die Ausgabe mit unterschiedlichen Werten für fileCount: <blockquote>
The disk "MyDisk" contains no files.
The disk "MyDisk" contains one file.
The disk "MyDisk" contains 1,273 files.
</blockquote>
Sie können das ChoiceFormat Programm wie im obigen Beispiel oder mithilfe eines Musters erstellen. Weitere Informationen finden Sie unter ChoiceFormat.
<Blockquote>
{@code
form.applyPattern(
"There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");
}
</blockquote>
<strong>Hinweis:</strong> Wie oben dargestellt, wird die von einem ChoiceFormat In MessageFormat erzeugte Zeichenfolge als sonderlich behandelt. Vorkommen von '{' werden verwendet, um Unterformate anzugeben und Rekursion zu verursachen. Wenn Sie sowohl ein als MessageFormat auch programmgesteuert ChoiceFormat erstellen (statt die Zeichenfolgenmuster zu verwenden), achten Sie darauf, kein Format zu erstellen, das sich selbst rekursiert, was eine unendliche Schleife verursacht.
Wenn ein einzelnes Argument mehrmals in der Zeichenfolge analysiert wird, ist die letzte Übereinstimmung das Endergebnis der Analyse. Beispiel: <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>
Ebenso würde das Analysieren mit einem MessageFormat Objekt mithilfe von Mustern, die mehrere Vorkommen desselben Arguments enthalten, die letzte Übereinstimmung zurückgeben. Beispiel: <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>
Nachrichtenformate werden nicht synchronisiert. Es wird empfohlen, separate Formatinstanzen für jeden Thread zu erstellen. Wenn mehrere Threads gleichzeitig auf ein Format zugreifen, muss es extern synchronisiert werden.
In 1.1 hinzugefügt.
Java Dokumentation für java.text.MessageFormat.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
| MessageFormat(String, Locale) |
Erstellt ein MessageFormat für das angegebene Gebietsschema und das angegebene Muster. |
| MessageFormat(String) |
Erstellt ein MessageFormat für das Standardgebietsschema |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Class |
Gibt die Laufzeitklasse dieses Werts |
| Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
| JniIdentityHashCode |
Ruft den Identitätshashcode ab, der diesem Java Peer von der Interop-Laufzeit zugewiesen ist. (Geerbt von Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Locale |
Ruft das Gebietsschema ab, das beim Erstellen oder Vergleichen von Unterformaten verwendet wird. -or- Legt das Gebietsschema fest, das beim Erstellen oder Vergleichen von Unterformaten verwendet werden soll. |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
| ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
| Name | Beschreibung |
|---|---|
| ApplyPattern(String) |
Legt das muster fest, das von diesem Nachrichtenformat verwendet wird. |
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| Dispose(Boolean) |
Veröffentlicht die Ressourcen, die von diesem Java Peer gehalten werden. (Geerbt von Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| Format(Object, StringBuffer, FieldPosition) |
Formatiert ein Array von Objekten und fügt das |
| Format(Object) |
Formatiert ein Objekt, um eine Zeichenfolge zu erzeugen. (Geerbt von _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Formatiert ein Array von Objekten und fügt das |
| Format(String, Object[]) |
Formatiert ein Array von Objekten und fügt das Muster des <Codes MessageFormat>/Code< an, wobei Formatelemente durch die formatierten Objekte ersetzt werden, an den bereitgestellten >Code<StringBuffer>/Code< angefügt.> |
| FormatToCharacterIterator(Object) |
Formatiert ein Objekt, das ein |
| GetFormats() |
Ruft die Formate ab, die für die Formatelemente in der zuvor festgelegten Musterzeichenfolge verwendet werden. |
| GetFormatsByArgumentIndex() |
Ruft die Formate ab, die für die werte verwendet werden, die an |
| GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
| JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
| Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
| NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
| Parse(String, ParsePosition) |
Analysiert die Zeichenfolge. |
| Parse(String) |
Analysiert Text vom Anfang der angegebenen Zeichenfolge, um ein Objektarray zu erzeugen. |
| ParseObject(String, ParsePosition) |
Analysiert Text aus einer Zeichenfolge, um ein Objektarray zu erzeugen. |
| ParseObject(String) |
Analysiert Text vom Anfang der angegebenen Zeichenfolge, um ein Objekt zu erzeugen. (Geerbt von _Format) |
| SetFormat(Int32, _Format) |
Legt das format fest, das für das Formatelement mit dem angegebenen Formatelementindex innerhalb der zuvor festgelegten Musterzeichenfolge verwendet werden soll. |
| SetFormatByArgumentIndex(Int32, _Format) |
Legt das Format fest, das für die Formatelemente innerhalb der zuvor festgelegten Musterzeichenfolge verwendet werden soll, die den angegebenen Argumentindex verwenden. |
| SetFormats(_Format[]) |
Legt die Formate fest, die für die Formatelemente in der zuvor festgelegten Musterzeichenfolge verwendet werden sollen. |
| SetFormatsByArgumentIndex(_Format[]) |
Legt die Formate fest, die für die werte verwendet werden sollen, die an |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToPattern() |
Gibt ein Muster zurück, das den aktuellen Status des Nachrichtenformats darstellt. |
| ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
| UnregisterFromRuntime() |
Hebt die Registrierung dieses Java Peers aus der Interop-Laufzeit auf. (Geerbt von Object) |
| Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em< oder >em<unterbrochen>/em<.><> (Geerbt von Object) |
| Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
| Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Ruft den JNI-Namen des Typs der Instanz |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |