Sprache

MessageFormat Klasse

Definition

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 java.util.Locale.Category#FORMAT FORMAT und das angegebene Muster.

Eigenschaften

Name Beschreibung
Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
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

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
JniPeerMembers

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

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)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
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()

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
Equals(Object)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
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 MessageFormatMuster an, wobei Formatelemente, die durch die formatierten Objekte ersetzt werden, an die bereitgestellten angefügt werden StringBuffer.

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 MessageFormatMuster an, wobei Formatelemente, die durch die formatierten Objekte ersetzt werden, an die bereitgestellten angefügt werden StringBuffer.

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 AttributedCharacterIteratorObjekt erzeugt.

(Geerbt von _Format)
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 format Methoden übergeben oder von parse Methoden zurückgegeben werden.

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 format Methoden übergeben oder von parse Methoden zurückgegeben werden.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
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()

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.Finalized()

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von JavaObject)
IJavaPeerable.UnregisterFromRuntime()

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

(Geerbt von _Format)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

MessageFormat stellt eine Möglichkeit bereit, verkettete Nachrichten auf sprachneutrale Weise zu erzeugen.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: