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.
<strong>[icu enhancement]</strong> ICU Ersetzung für java.text.MessageFormat.
[Android.Runtime.Register("android/icu/text/MessageFormat", ApiSince=24, DoNotGenerateAcw=true)]
public class MessageFormat : Android.Icu.Text.UFormat
[<Android.Runtime.Register("android/icu/text/MessageFormat", ApiSince=24, DoNotGenerateAcw=true)>]
type MessageFormat = class
inherit UFormat
- Vererbung
- Attribute
Hinweise
<strong>[icu enhancement]</strong> ICU Ersetzung für java.text.MessageFormat. Methoden, Felder und andere für ICU spezifische Funktionen werden als "<strong>[icu]</strong>" bezeichnet.
MessageFormat bereitet Zeichenfolgen für die Anzeige für Benutzer mit optionalen Argumenten (Variablen/Platzhalter) vor. Die Argumente können in jeder Reihenfolge auftreten, die für die Übersetzung in Sprachen mit unterschiedlichen Grammatiken erforderlich ist.
Ein MessageFormat wird aus einer <Em-Muster><-/Em-Zeichenfolge> mit Argumenten in {curly braces} erstellt, die durch formatierte Werte ersetzt werden.
MessageFormat unterscheidet sich von den anderen Format Klassen darin, dass Sie ein MessageFormat Objekt mit einem seiner Konstruktoren erstellen (nicht mit einer getInstance Style Factory-Methode). Factorymethoden sind nicht erforderlich, da MessageFormat selbst kein gebietsschemaspezifisches Verhalten implementiert wird. Jedes gebietsschemaspezifische Verhalten wird durch das von Ihnen bereitgestellte Muster und die für eingefügte Argumente verwendeten Unterformate definiert.
Argumente können benannt werden (mithilfe von Bezeichnern) oder nummeriert (mit kleinen ASCII-Ziffern ganzzahligen Zahlen). Einige der API-Methoden funktionieren nur mit Argumentnummern und lösen eine Ausnahme aus, wenn das Muster benannte Argumente aufweist (siehe #usesNamedArguments()).
Ein Argument gibt möglicherweise keinen Formattyp an. In diesem Fall wird ein Zahlenwert mit einem Standardwert (für das Gebietsschema) NumberFormat formatiert, ein Date-Wert wird mit einem Standardwert (für das Gebietsschema) DateFormat formatiert, und für jeden anderen Wert wird sein toString()-Wert verwendet.
Ein Argument kann einen "einfachen" Typ angeben, für den das angegebene Format-Objekt erstellt, zwischengespeichert und verwendet wird.
Ein Argument weist möglicherweise einen "komplexen" Typ mit geschachtelten MessageFormat-Untermustern auf. Während der Formatierung wird eine dieser Unternachrichten entsprechend dem Argumentwert ausgewählt und rekursiv formatiert.
Nach der Konstruktion kann ein benutzerdefiniertes Format-Objekt für ein Argument auf oberster Ebene festgelegt werden, wobei das Standardformatierungs- und Analyseverhalten für dieses Argument überschrieben wird. Benutzerdefinierte Formatierungen können jedoch einfacher erreicht werden, indem ein typloses Argument in der Musterzeichenfolge geschrieben und mit einem vorformatierten Zeichenfolgenwert bereitgestellt wird.
Beim Formatieren verwendet MessageFormat eine Auflistung von Argumentwerten und schreibt eine Ausgabezeichenfolge. Die Argumentwerte können als Array übergeben werden (wenn das Muster nur nummerierte Argumente enthält) oder als Zuordnung (die sowohl für benannte als auch nummerierte Argumente funktioniert).
Jedes Argument wird mit einem der Eingabewerte nach Arrayindex oder Zuordnungsschlüssel abgeglichen und entsprechend seiner Musterspezifikation formatiert (oder ein benutzerdefiniertes Format-Objekt verwendet, wenn ein Objekt festgelegt wurde). Ein argument für ein nummeriertes Muster wird mit einem Kartenschlüssel abgeglichen, der diese Zahl als ASCII-Dezimalziffernzeichenfolge (ohne führende Null) enthält.
<h3>"patterns"Patterns and> Their Interpretation</h3>
MessageFormat verwendet Muster des folgenden Formulars: <Blockquote>
message = messageText (argument messageText)*
argument = noneArg | simpleArg | complexArg
complexArg = choiceArg | pluralArg | selectArg | selectordinalArg
noneArg = '{' argNameOrNumber '}'
simpleArg = '{' argNameOrNumber ',' argType [',' argStyle] '}'
choiceArg = '{' argNameOrNumber ',' "choice" ',' choiceStyle '}'
pluralArg = '{' argNameOrNumber ',' "plural" ',' pluralStyle '}'
selectArg = '{' argNameOrNumber ',' "select" ',' selectStyle '}'
selectordinalArg = '{' argNameOrNumber ',' "selectordinal" ',' pluralStyle '}'
choiceStyle: see {@link ChoiceFormat}
pluralStyle: see {@link PluralFormat}
selectStyle: see {@link SelectFormat}
argNameOrNumber = argName | argNumber
argName = [^[[:Pattern_Syntax:][:Pattern_White_Space:]]]+
argNumber = '0' | ('1'..'9' ('0'..'9')*)
argType = "number" | "date" | "time" | "spellout" | "ordinal" | "duration"
argStyle = "short" | "medium" | "long" | "full" | "integer" | "currency" | "percent" | argStyleText
</blockquote>
<ul><li>messageText kann an zitierte Literalzeichenfolgen einschließlich Syntaxzeichen enthalten. Eine an zitierte Literalzeichenfolge beginnt mit einem ASCII-Apostroph und einem Syntaxzeichen (in der Regel eine {geschweifte Klammer}) und wird bis zum nächsten einzelnen Apostroph fortgesetzt. Ein doppeltes ASCII-Apostroph innerhalb oder außerhalb einer anführungszeichen Zeichenfolge steht für ein Literal-Apostroph.
<Li>Quotable syntax characters are the {curly braces} in all messageText parts, plus the '#' sign in a messageText immediately inside a pluralStyle, and the '|' symbol in a messageText immediately inside a choiceStyle.
<li Siehe auch >MessagePattern.ApostropheModeli<>In argStyleText, jedes einzelne ASCII-Apostroph beginnt und endet mit zitierten Literaltext, und nicht angestellte {curly braces} muss in übereinstimmenden Paaren auftreten.
</ul>
Empfehlung: Verwenden Sie das reale Apostroph (einfaches Anführungszeichen) \\u2019 für lesbaren Text, und verwenden Sie das ASCII-Apostroph (\\u0027 ' ) nur in der Programmsyntax, z. B. in MessageFormat. Siehe die Anmerkungen für U+0027 Apostroph im Unicode-Standard.
Der choice Argumenttyp ist veraltet. Verwenden Sie plural Argumente für die richtige Pluralauswahl und select Argumente für eine einfache Auswahl zwischen einer festen Auswahl.
Die argType Werte argStyle werden verwendet, um eine Format Instanz für das Formatelement zu erstellen. In der folgenden Tabelle wird gezeigt, wie die Werte Formatinstanzen zugeordnet sind. Kombinationen, die nicht in der Tabelle angezeigt werden, sind unzulässig. Alle argStyleText müssen eine gültige Musterzeichenfolge für die verwendete Format-Unterklasse sein.
<table border=1><tr><th>argType <th argStyle >th<>result Format object <tr><td colspan=2>(none)<td>null<tr><td rowspan=5>number<td>(none)<td>NumberFormat.getInstance(getLocale())<><>integer<>NumberFormat.getIntegerInstance(getLocale())<tr><td td>currency<tr td td>NumberFormat.getCurrencyInstance(getLocale())<><tr td td trd td trd tr>percent<>NumberFormat.getPercentInstance(getLocale())<><td>argStyleText<td>new DecimalFormat(argStyleText, new DecimalFormatSymbols(getLocale()))<tr><td rowspan=6>date<td>(none)<td tr>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())td<><td>short<td>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())<><td td>medium<>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><td>long<td tr>DateFormat.getDateInstance(DateFormat.LONG, getLocale())<><td>full<td tr td>DateFormat.getDateInstance(DateFormat.FULL, getLocale())<td><>td td argStyleText td<>new SimpleDateFormat(argStyleText, getLocale())<tr><td rowspan=6>time<td>(none)<td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<><td td>short<>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())<><tr td td td>medium<>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<><td td>long<>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())<tr><td>full<td tr td>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())<tr><td> argStyleText <td tr>new SimpleDateFormat(argStyleText, getLocale())<><td>spellout<td>argStyleText (optional)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT) <br> .setDefaultRuleset(argStyleText);<tr><td>ordinal<td>argStyleText (optional)<td tr>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL) <br> .setDefaultRuleset(argStyleText);td<><td td>duration<> argStyleText (optional)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION) <br> .setDefaultRuleset(argStyleText);</table>
<h4>"diffsjdk">Unterschiede von java.text.MessageFormat</h4>
Das ICU MessageFormat unterstützt sowohl benannte als auch nummerierte Argumente, während das JDK MessageFormat nur nummerierte Argumente unterstützt. Benannte Argumente machen Muster besser lesbar.
ICU implementiert eine benutzerfreundlichere Apostroph-Zitatsyntax. Im Nachrichtentext beginnt ein Apostroph nur dann mit dem Zitieren von Literaltext, wenn es unmittelbar vor einem Syntaxzeichen steht (meist {geschweifte Klammern}).<br> Im JDK MessageFormat beginnt immer ein Apostroph zu zitieren, das häufigen Text wie "nicht" und "aujourd'hui" erfordert, um mit doppelten Apostrophen wie "don't" und "aujourd'hui" geschrieben zu werden. Weitere Informationen finden Sie unter MessagePattern.ApostropheMode.
ICU erstellt kein ChoiceFormat-Objekt für ein choiceArg-, pluralArg- oder selectArg-Objekt, sondern behandelt diese Argumente selbst. Das JDK MessageFormat erstellt und verwendet ein ChoiceFormat -Objekt (new ChoiceFormat(argStyleText)). Das JDK unterstützt keine Plural- und Auswahlargumente.
<h4>Nutzungsinformationen</h4>
Hier sind einige Beispiele für die Verwendung: <Blockquote>
Object[] arguments = {
7,
new Date(System.currentTimeMillis()),
"a disturbance in the Force"
};
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
arguments);
<em>output</em>: At 12:30 PM on Jul 3, 2053, there was a disturbance
in the Force on planet 7.
</blockquote> In der Regel stammt das Nachrichtenformat aus Ressourcen, und die Argumente werden zur Laufzeit dynamisch festgelegt.
Beispiel 2: <Blockquote>
Object[] testArgs = { 3, "MyDisk" };
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
// output, with different testArgs
<em>output</em>: The disk "MyDisk" contains 0 file(s).
<em>output</em>: The disk "MyDisk" contains 1 file(s).
<em>output</em>: The disk "MyDisk" contains 1,273 file(s).
</blockquote>
Für Nachrichten, die Pluralformen enthalten, können Sie ein Plural-Argument verwenden:
MessageFormat msgFmt = new MessageFormat(
"{num_files, plural, " +
"=0{There are no files on disk \"{disk_name}\".}" +
"=1{There is one file on disk \"{disk_name}\".}" +
"other{There are # files on disk \"{disk_name}\".}}",
ULocale.ENGLISH);
Map args = new HashMap();
args.put("num_files", 0);
args.put("disk_name", "MyDisk");
System.out.println(msgFmt.format(args));
args.put("num_files", 3);
System.out.println(msgFmt.format(args));
<em>output</em>:
There are no files on disk "MyDisk".
There are 3 files on "MyDisk".
Weitere Informationen finden Sie unterPluralFormat.PluralRules
<h4>"synchronization">Synchronization</h4>
MessageFormats 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.
Java Dokumentation für android.icu.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) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| MessageFormat(String, Locale) |
Erstellt ein MessageFormat für das angegebene Gebietsschema und das angegebene Muster. |
| MessageFormat(String, ULocale) |
Erstellt ein MessageFormat für das angegebene Gebietsschema und das angegebene Muster. |
| MessageFormat(String) |
Erstellt ein MessageFormat für das Standardgebietsschema |
Eigenschaften
| Name | Beschreibung |
|---|---|
| ApostropheMode |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| ArgumentNames |
<strong>[icu]</strong> Gibt die Namen der Argumente der obersten Ebene zurück. |
| 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 |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| JniPeerMembers |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| Locale |
Gibt das Gebietsschema zurück, das beim Erstellen oder Vergleichen von Unterformaten verwendet wird. -or- Legt das Gebietsschema fest, das zum Erstellen von Argumentformatobjekten verwendet werden soll. |
| PeerReference |
Ruft den JNI-Objektverweis für diesen Java Peer ab. (Geerbt von Object) |
| ThresholdClass |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| ThresholdType |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| ULocale |
<strong>[icu]</strong> Gibt das Gebietsschema zurück, das beim Erstellen von Argumentformatobjekten verwendet wird. |
Methoden
| Name | Beschreibung |
|---|---|
| ApplyPattern(String, MessagePattern+ApostropheMode) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| ApplyPattern(String) |
Legt das muster fest, das von diesem Nachrichtenformat verwendet wird. |
| AutoQuoteApostrophe(String) |
<strong>[icu]</strong> Wandelt ein "apostrophfreundliches" Muster in ein Standardmuster um. |
| Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| 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() |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| Equals(Object) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
| Format(IDictionary<String,Object>, StringBuffer, FieldPosition) |
Formatiert eine Zuordnung von Objekten und fügt das |
| Format(Object, StringBuffer, FieldPosition) |
Formatiert eine Zuordnung oder 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, IDictionary<String,Object>) |
Erstellt ein MessageFormat mit dem angegebenen Muster und verwendet es zum Formatieren der angegebenen Argumente. |
| Format(String, Object[]) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| FormatToCharacterIterator(Object) |
Formatiert ein Objekt, das ein |
| GetFormatByArgumentName(String) |
<strong>[icu]</strong> Gibt das erste Format der obersten Ebene zurück, das dem angegebenen Argumentnamen zugeordnet ist. |
| GetFormats() |
Gibt die Format-Objekte zurück, die für die Formatelemente in der zuvor festgelegten Musterzeichenfolge verwendet werden. |
| GetFormatsByArgumentIndex() |
Gibt die Format -Objekte zurück, 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 oder eine Zuordnung zu erzeugen. |
| ParseObject(String) |
Analysiert Text vom Anfang der angegebenen Zeichenfolge, um ein Objekt zu erzeugen. (Geerbt von _Format) |
| ParseToMap(String, ParsePosition) |
<strong>[icu]</strong> analysiert die Zeichenfolge und gibt die Ergebnisse in einer Karte zurück. |
| ParseToMap(String) |
<strong>[icu]</strong> parses text from the beginning of the given string to produce a map from argument to values. |
| SetFormat(Int32, _Format) |
Legt das Format-Objekt fest, das für das Formatelement mit dem angegebenen Formatelementindex innerhalb der zuvor festgelegten Musterzeichenfolge verwendet werden soll. |
| SetFormatByArgumentIndex(Int32, _Format) |
Legt das Format-Objekt fest, das für die Formatelemente innerhalb der zuvor festgelegten Musterzeichenfolge verwendet werden soll, die den angegebenen Argumentindex verwenden. |
| SetFormatByArgumentName(String, _Format) |
<strong>[icu]</strong> Legt das Format-Objekt fest, das für die Formatelemente innerhalb der zuvor festgelegten Musterzeichenfolge verwendet werden soll, die den angegebenen Argumentnamen verwenden. |
| SetFormats(_Format[]) |
Legt die Format-Objekte fest, die für die Formatelemente in der zuvor festgelegten Musterzeichenfolge verwendet werden sollen. |
| SetFormatsByArgumentIndex(_Format[]) |
Legt die Format-Objekte fest, die für die werte verwendet werden sollen, die an |
| SetFormatsByArgumentName(IDictionary<String,_Format>) |
<strong>[icu]</strong> Legt die Format-Objekte fest, die für die werte verwendet werden sollen, die in |
| SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
| SetLocale(ULocale) |
Legt das Gebietsschema fest, das zum Erstellen von Argumentformatobjekten verwendet werden soll. |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| ToArray<T>() |
Erstellt ein verwaltetes Array aus diesem Java Arraywrapper. (Geerbt von Object) |
| ToPattern() |
Gibt die angewendete Musterzeichenfolge zurück. |
| 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) |
| UsesNamedArguments() |
<strong>[icu]</strong> Gibt true zurück, wenn dieses MessageFormat benannte Argumente verwendet, andernfalls "false". |
| 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() |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.Finalized() |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.JniObjectReferenceControlBlock |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| IJavaPeerable.UnregisterFromRuntime() |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
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) |
<strong>[icu enhancement]</strong> ICU Ersetzung für |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Versuchen Sie, die Eingabe |