Язык

MessageFormat Класс

Определение

<strong>[icu усовершенствования]</строго> ICU для замены 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
Наследование
Атрибуты

Комментарии

<strong>[icu усовершенствования]</строго> ICU замены для java.text.MessageFormat.> Методы, поля и другие функциональные возможности, относящиеся к ICU, помечены как< strong>[icu]</strong>.

MessageFormat подготавливает строки для отображения пользователям с необязательными аргументами (переменными и заполнителями). Аргументы могут выполняться в любом порядке, что необходимо для перевода на языки с разными грамматиками.

MessageFormat создается из <строки em>pattern</em> с аргументами в {фигурные скобки}, которые будут заменены форматированными значениями.

MessageFormat отличается от других Format классов, в том, что вы создаете MessageFormat объект с одним из его конструкторов (не с методом фабрики стилей getInstance ). Методы фабрики не нужны, так как MessageFormat сама по себе не реализует поведение конкретного языкового стандарта. Любое поведение, зависящее от языкового стандарта, определяется предоставленным шаблоном и подформатами, используемыми для вставленных аргументов.

Аргументы можно назвать (с помощью идентификаторов) или нумеровать (с помощью небольших целых чисел ASCII). Некоторые методы API работают только с номерами аргументов и вызывают исключение, если шаблон имеет именованные аргументы (см. раздел #usesNamedArguments()).

Аргумент может не указывать какой-либо тип формата. В этом случае значение Number отформатировано по умолчанию (для языкового стандарта) NumberFormat, значение Date отформатировано по умолчанию (для языкового стандарта) DateFormat, а для любого другого значения используется значение toString().

Аргумент может указать "простой" тип, для которого создается указанный объект Format, кэшируется и используется.

Аргумент может иметь "сложный" тип с вложенными вложенными шаблонами MessageFormat. Во время форматирования один из этих вложенных сообщений выбирается в соответствии со значением аргумента и рекурсивно отформатирован.

После создания настраиваемый объект Format можно задать для аргумента верхнего уровня, переопределяя поведение форматирования и синтаксического анализа по умолчанию для этого аргумента. Однако настраиваемое форматирование можно сделать проще, написав бестипный аргумент в строке шаблона и предоставив его предварительно сформированным строковым значением.

При форматировании MessageFormat принимает коллекцию значений аргументов и записывает выходную строку. Значения аргументов могут передаваться в виде массива (если шаблон содержит только нумерованные аргументы) или в виде карты (которая работает как для именованных, так и нумерованных аргументов).

Каждый аргумент сопоставляется с одним из входных значений по индексу массива или ключу карты и отформатирован в соответствии со спецификацией шаблона (или с помощью пользовательского объекта Format, если он был задан). Аргумент нумерованного шаблона сопоставляется с ключом карты, который содержит это число в виде строки ASCII-десятичной цифры (без начального нуля).

<h3>"patterns">Patterns and Их Интерпретация</h3>

MessageFormat использует шаблоны следующей формы: <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 может содержать кавычек литеральные строки, включая символы синтаксиса. Процитированная строка литерала начинается с апострофа ASCII и синтаксического символа (обычно {curly brace}) и продолжается до следующего апострофа. Двойной apostrophe ASCII внутри или за пределами кавычек представляет один литерал апостроф. <Символы>синтаксиса квоты — это {фигурные скобки} во всех частях messageText, а также вход "#" в messageText непосредственно внутри pluralStyle и символ "|" в сообщенииText сразу внутри элемента choiceStyle. <li>see также MessagePattern.ApostropheMode<li>In argStyleText, каждый отдельный apostrophe ASCII начинается и заканчивается кавычки литерального текста, и неквотированные {фигурные скобки} должны происходить в сопоставленных парах. </ul>

Рекомендация. Используйте реальный символ апострофа (одинарный кавычки) \\u2019 для текста, доступного для чтения человека, и используйте apostrophe ASCII (\\u0027 ' ) только в синтаксисе программы, например при кавычках в MessageFormat. См. заметки для Apostrophe U+0027 в Стандарте Юникода.

Тип choice аргумента устарел. Используйте plural аргументы для правильного выбора множественного числа и select аргументов для простого выбора между фиксированным набором вариантов.

argType Значения argStyle используются для создания Format экземпляра для элемента форматирования. В следующей таблице показано, как значения сопоставляется с экземплярами Format. Сочетания, не отображаемые в таблице, являются незаконными. Любое argStyleText должно быть допустимой строкой шаблона для используемого подкласса Format.

<table border=1><tr><th>argType <th argStyle >th<>результирующий объект <Format tr><td colspan=2>(none)<>null<td tr><td rowspan=5>number<td>(none)<>NumberFormat.getInstance(getLocale())<td tr><>integer<>NumberFormat.getIntegerInstance(getLocale())<td td tr><>currency<>NumberFormat.getCurrencyInstance(getLocale())<td td tr><>percent<>NumberFormat.getPercentInstance(getLocale())<> td<td>argStyleText<td>new DecimalFormat(argStyleText, new DecimalFormatSymbols(getLocale()))<tr><td rowspan=6>date<td>(none)<>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<><>short<>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())<><>medium<>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<><>long<>DateFormat.getDateInstance(DateFormat.LONG, getLocale())<><>full<>DateFormat.getDateInstance(DateFormat.FULL, getLocale())<td tr td td trd td trd trd><>argStyleText td<>new SimpleDateFormat(argStyleText, getLocale())<tr><td rowspan=6>time<td>(none)<td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<tr><>short<>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())<td td><>medium<>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<><>long<>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())<><>full<>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())<trd><> argStyleText <td>new SimpleDateFormat(argStyleText, getLocale())<><>spellout<td td>argStyleText (необязательно)<td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT) <br>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(argStyleText);<trd td>< argStyleText (необязательно)td tr>ordinal<><>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL) <br>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(argStyleText);<>td td<> argStyleText (необязательно)duration<><td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION) <br>&nbsp;&nbsp;&nbsp;&nbsp;.setDefaultRuleset(argStyleText);</table>

<h4>"diffsjdk">Отличия от java.text.MessageFormat</h4>

ICU MessageFormat поддерживает как именованные, так и нумерованные аргументы, а JDK MessageFormat поддерживает только нумерованные аргументы. Именованные аргументы делают шаблоны более читаемыми.

ICU реализует более удобный для пользователя синтаксис кавыкания апострофа. В тексте сообщения апостроха начинается только кавычки литерального текста, если он сразу же предшествует синтаксису (в основном {фигурные скобки}).<br> В JDK MessageFormat апострофа всегда начинается цитата, которая требует общего текста, например "не" и "aujourd'hui", чтобы быть написаны с двойными апострофами, такими как "не" и "aujourd'hui". Дополнительные сведения см. в следующей статье: MessagePattern.ApostropheMode.

ICU не создает объект ChoiceFormat для выбораArg, pluralArg или selectArg, а скорее обрабатывает такие аргументы. JDK MessageFormat создает и использует объект ChoiceFormat (new ChoiceFormat(argStyleText)). JDK не поддерживает множественное число и выбирает аргументы вообще.

<сведения об> использовании h4</h4>

Ниже приведены некоторые примеры использования: <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> обычно формат сообщения будет поступать из ресурсов, и аргументы будут динамически задаваться во время выполнения.

Пример 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>

Для сообщений, включающих формы множественного числа, можно использовать аргумент plural:

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".

См PluralFormat . и PluralRules дополнительные сведения.

<h4>"синхронизация">Синхронизация</h4>

MessageFormats не синхронизированы. Рекомендуется создать отдельные экземпляры формата для каждого потока. Если несколько потоков одновременно обращаются к формату, он должен быть синхронизирован вневне.

Java документации по android.icu.text.MessageFormat.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя. Описание
MessageFormat(IntPtr, JniHandleOwnership)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

MessageFormat(String, Locale)

Создает MessageFormat для указанного языкового стандарта и шаблона.

MessageFormat(String, ULocale)

Создает MessageFormat для указанного языкового стандарта и шаблона.

MessageFormat(String)

Создает MessageFormat для языкового стандарта по умолчанию FORMAT и указанного шаблона.

Свойства

Имя. Описание
ApostropheMode

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

ArgumentNames

<strong>[icu]</strong> Возвращает имена аргументов верхнего уровня.

Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
JniPeerMembers

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

Locale

Возвращает языковой стандарт, используемый при создании или сравнении подформатов. -или- Задает языковой стандарт, используемый для создания объектов аргумента Format.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
ThresholdClass

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

ThresholdType

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

ULocale

<strong>[icu]</strong> Возвращает языковой стандарт, используемый при создании объектов format.

Методы

Имя. Описание
ApplyPattern(String, MessagePattern+ApostropheMode)

[icu] Задает ApostropheMode и шаблон, используемый в этом формате сообщения.

ApplyPattern(String)

Задает шаблон, используемый этим форматом сообщения.

AutoQuoteApostrophe(String)

<strong>[icu]</strong> преобразует шаблон apostrophe-friendly в стандартный шаблон.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от _Format)
Construct(JniObjectReference, JniObjectReferenceOptions)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
Equals(Object)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
Format(IDictionary<String,Object>, StringBuffer, FieldPosition)

Форматирует MessageFormatкарту объектов и добавляет шаблон с аргументами, заменяемыми отформатированными объектами, в предоставленный StringBuffer.

Format(Object, StringBuffer, FieldPosition)

Форматирует MessageFormatкарту или массив объектов и добавляет шаблон с элементами форматирования, заменяемыми отформатированными объектами, к предоставленному StringBufferобъекту.

Format(Object)

Форматирует объект для создания строки.

(Унаследовано от _Format)
Format(Object[], StringBuffer, FieldPosition)

Форматирует MessageFormatмассив объектов и добавляет шаблон с аргументами, заменяемыми отформатированными объектами, к предоставленным StringBuffer.

Format(String, IDictionary<String,Object>)

Создает MessageFormat с заданным шаблоном и использует его для форматирования заданных аргументов.

Format(String, Object[])

Создает MessageFormat с заданным шаблоном и использует его для форматирования заданных аргументов.

FormatToCharacterIterator(Object)

Форматирует объект, создающий AttributedCharacterIteratorобъект.

(Унаследовано от _Format)
GetFormatByArgumentName(String)

<strong>[icu]</strong> Возвращает первый формат верхнего уровня, связанный с заданным именем аргумента.

GetFormats()

Возвращает объекты Format, используемые для элементов формата в ранее заданной строке шаблона.

GetFormatsByArgumentIndex()

Возвращает объекты Format, используемые для значений, переданных в format методы или возвращаемые из parse методов.

GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
Parse(String, ParsePosition)

Анализирует строку.

Parse(String)

Анализирует текст с начала заданной строки для создания массива объектов.

ParseObject(String, ParsePosition)

Анализирует текст из строки для создания массива объектов или map.

ParseObject(String)

Анализирует текст с начала заданной строки для создания объекта.

(Унаследовано от _Format)
ParseToMap(String, ParsePosition)

<strong>[icu]</strong> анализирует строку, возвращая результаты в карте.

ParseToMap(String)

<strong>[icu]</strong> Parses text с начала заданной строки для создания карты из аргумента в значения.

SetFormat(Int32, _Format)

Задает объект Format, используемый для элемента форматирования с заданным индексом элементов формата в строке шаблона, заданной ранее.

SetFormatByArgumentIndex(Int32, _Format)

Задает объект Format, используемый для элементов форматирования в строке шаблона, которая использует заданный индекс аргументов.

SetFormatByArgumentName(String, _Format)

<strong>[icu]</strong> Задает объект Format, используемый для элементов форматирования в строке шаблона, которая использует заданное имя аргумента.

SetFormats(_Format[])

Задает объекты Format, которые будут использоваться для элементов форматирования в строке шаблона, заданной ранее.

SetFormatsByArgumentIndex(_Format[])

Задает объекты Format, которые будут использоваться для значений, переданных в format методы или возвращаемых из parse методов.

SetFormatsByArgumentName(IDictionary<String,_Format>)

<strong>[icu]</strong> Задает объекты Format для использования для значений, передаваемых в format методы или возвращаемых из parse методов.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetLocale(ULocale)

Задает языковой стандарт, используемый для создания объектов format.

SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToPattern()

Возвращает примененную строку шаблона.

ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
UsesNamedArguments()

<strong>[icu]</strong> Возвращает значение true, если этот аргумент MessageFormat использует именованные аргументы и false в противном случае.

Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

Имя. Описание
IJavaPeerable.Disposed()

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

(Унаследовано от _Format)

Методы расширения

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

<strong>[icu усовершенствования]</строго> ICU для замены java.text.MessageFormat.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к