MessageFormat Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
MessageFormat предоставляет средства для создания сцепленных сообщений в нейтральном языке.
[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
- Наследование
- Атрибуты
Комментарии
MessageFormat предоставляет средства для создания сцепленных сообщений в нейтральном языке. Используйте это для создания сообщений, отображаемых для конечных пользователей.
MessageFormat принимает набор объектов, форматирует их, а затем вставляет форматированные строки в шаблон в соответствующие места.
<strong>Note:</strong>MessageFormat отличается от других Format классов, в том, что вы создаете MessageFormat объект с одним из его конструкторов (не с методом getInstance фабрики стилей). Методы фабрики не нужны, так как MessageFormat сама по себе не реализует конкретное поведение языкового стандарта. Любое поведение языкового стандарта определяется предоставленным шаблоном, а также подформатами, используемыми для вставленных аргументов.
<h2>"patterns">Patterns and Их Интерпретация</h2>
MessageFormat использует шаблоны следующей формы: <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>
В строке пара одинарных кавычек может использоваться для кавычки любых произвольных символов, кроме отдельных кавычек. Например, строка шаблона представляет строку "'{0}'""{0}", а не FormatElement. Одна кавычка должна быть представлена двойными однократными кавычками '' в строке. Например, строка "'{''}'" шаблона интерпретируется как последовательность '{ (начало кавычки и левая фигурная скобка), '' (одна кавычка) и }' (правый фигурный скобка и конец кавычки), <em>not</em>'{' и '}' (кавычки слева и правые фигурные скобки): представляющий строку"{'}", <em not>/em<>"{}".
SubformatPattern интерпретируется соответствующим подформатом, и применяются правила шаблона, зависящие от подформата. Например, строка "{1,number,<u>$'#',##</u>}" шаблона (SubformatPattern с подчеркиванием) создаст числовой формат с кавычками фунта, с таким результатом, как: "$#31,45" Дополнительные сведения см. в документации по каждому Format подклассу.
Любая несовпадная цитата рассматривается как закрытая в конце заданного шаблона. Например, строка "'{0шаблона "} рассматривается как шаблон "'{0""}.
Все фигурные скобки в неквалированном шаблоне должны быть сбалансированы. Например, "ab {0} de" и "ab '}' de" являются допустимыми шаблонами, но "ab {0'}' de""ab } de" и "''{''" не являются.
<dl><dt><b>Предупреждение:</b><dd>Правила использования кавычки в шаблонах формата сообщения, к сожалению, были несколько запутанными. В частности, это не всегда очевидно для локализаторов, должны ли одинарные кавычки быть двойными или нет. Обязательно сообщите локалиизаторам о правилах и сообщите им (например, используя примечания в исходных файлах пакета ресурсов), какие строки будут обрабатываться MessageFormat. Обратите внимание, что локализация может потребоваться использовать одинарные кавычки в переведенных строках, где у исходной версии их нет.
</dl>
Значение ArgumentIndex — это неотрицательное целое число, записанное с помощью цифр '0''9', и представляет индекс в arguments массив format , передаваемый методам или результирующий массив, parse возвращаемый методами.
Значения FormatType и FormatStyle используются для создания Format экземпляра для элемента форматирования. В следующей таблице показано, как значения сопоставляются с Format экземплярами. Сочетания, не отображаемые в таблице, являются незаконными.
SubformatPattern должен быть допустимой строкой шаблона для используемого подклассаFormat.
<table class="plain"caption style="display:none">How FormatType and FormatStyle values map to Format instances</caption><thead><tr><th scope="col" class="TableHeadingColor"FormatType th scope="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"><>(нет)<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())<><th scope="row"style="text-weight: normal"td>integer<>tr th scope="text-weight="text-weight: normal"NumberFormat#getIntegerInstance(Locale) NumberFormat.getIntegerInstance(getLocale())<tr><th scope="text-weight: normal>currency<"td>NumberFormat#getCurrencyInstance(Locale) NumberFormat.getCurrencyInstance(getLocale())<tr><th scope="row" style="text-weight: normal">percent<td tr>NumberFormat#getPercentInstance(Locale) NumberFormat.getPercentInstanceth scope="row" style="text-weight: normal"(getLocale())<>td<><>newDecimalFormat#DecimalFormat(String,DecimalFormatSymbols) DecimalFormat(subformatPattern,DecimalFormatSymbols#getInstance(Locale) DecimalFormatSymbols.getInstance(getLocale()))<tr th scope="row-weight:"text-weight: normal" rowspan=6><>th scope="row" style="text-weight: normal"text-weight: normal"date<(none)>td<>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#DEFAULTtr, getLocale())<><th scope="row" style="text-weight: normal">short<td tr th scope="row" style="text-weight: normal"td>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#SHORT, getLocale())<><>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="text-weight: normal"><>tdfull<>DateFormat#getDateInstance(int,Locale) DateFormat.getDateInstance(DateFormat#FULLtr th, getLocale())<>< scope="row" style="text-weight: normal">SubformatPattern<td>newSimpleDateFormat#SimpleDateFormat(String,Locale) SimpleDateFormat(subformatPattern, getLocale())<th><scope="row" style="text-weight: normal" rowspan=6>time<th scope="row-weight:"text-weight: normal">(none)<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstanceth scope="row"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 tr th scope="row" style="text-weight: normal">DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(tdDateFormat#DEFAULT, getLocale())<><>long<>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#LONGtr, getLocale())<th scope="row" style="text-weight: normal"><>tdfull<>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#FULLtr, getLocale())<><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</h3>
Ниже приведены некоторые примеры использования. В реальных международных программах шаблон формата сообщения и другие статические строки, конечно, будут получены из пакетов ресурсов. Другие параметры будут динамически определяться во время выполнения.
В первом примере используется статический метод MessageFormat.format, который внутренне создает MessageFormat однократное использование: <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 Выходные данные: >blockquote<>
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
</blockquote>
В следующем примере создается MessageFormat экземпляр, который можно использовать многократно: <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 Выходные данные с различными значениями для >: fileCountblockquote<>
The disk "MyDisk" contains 0 file(s).
The disk "MyDisk" contains 1 file(s).
The disk "MyDisk" contains 1,273 file(s).
</blockquote>
Для более сложных шаблонов можно использовать ChoiceFormat для создания правильных форм для сингулярного и множественного числа: <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 Выходные данные с различными значениями для >: fileCountblockquote<>
The disk "MyDisk" contains no files.
The disk "MyDisk" contains one file.
The disk "MyDisk" contains 1,273 files.
</blockquote>
Вы можете создать ChoiceFormat программно, как в приведенном выше примере, или с помощью шаблона. См. ChoiceFormat для получения дополнительной информации.
<blockquote>
{@code
form.applyPattern(
"There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.");
}
</blockquote>
<strong>Note:</strong> , как показано выше, строка, созданная в ней ChoiceFormatMessageFormat , рассматривается как специальная; вхождения "{" используются для указания подформатов и причины рекурсии. Если вы создаете и MessageFormatChoiceFormat программно (вместо использования шаблонов строк), будьте осторожны, чтобы не создавать формат, который рекурсирует на себя, что приведет к бесконечному циклу.
Если один аргумент анализируется несколько раз в строке, последний матч будет окончательным результатом синтаксического анализа. Например, <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>
Аналогичным образом синтаксический анализ объекта MessageFormat с использованием шаблонов, содержащих несколько вхождения одного и того же аргумента, вернет последнее совпадение. Например, <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>"синхронизация">Синхронизация</h3>
Форматы сообщений не синхронизируются. Рекомендуется создать отдельные экземпляры формата для каждого потока. Если несколько потоков одновременно обращаются к формату, он должен быть синхронизирован вневне.
Добавлено в версии 1.1.
Java документации по java.text.MessageFormat.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
| MessageFormat(String, Locale) |
Создает MessageFormat для указанного языкового стандарта и шаблона. |
| MessageFormat(String) |
Создает MessageFormat для языкового стандарта по умолчанию |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Locale |
Возвращает языковой стандарт, используемый при создании или сравнении подформатов. -или- Задает языковой стандарт, используемый при создании или сравнении подформатов. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
| Имя. | Описание |
|---|---|
| ApplyPattern(String) |
Задает шаблон, используемый этим форматом сообщения. |
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| Format(Object, StringBuffer, FieldPosition) |
Форматирует |
| Format(Object) |
Форматирует объект для создания строки. (Унаследовано от _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Форматирует |
| Format(String, Object[]) |
Форматирует <массив объектов и добавляет шаблон MessageFormat>/code< кода>с элементами форматирования, замененными отформатированными объектами, в предоставленный <код StringBuffer>/code<>. |
| FormatToCharacterIterator(Object) |
Форматирует объект, создающий |
| GetFormats() |
Возвращает форматы, используемые для элементов формата в строке шаблона, заданной ранее. |
| GetFormatsByArgumentIndex() |
Возвращает форматы, используемые для значений, передаваемых в |
| GetHashCode() |
Возвращает хэш-значение кода для объекта. (Унаследовано от Object) |
| JavaFinalize() |
Устаревшие.
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| Notify() |
Просыпается один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| Parse(String, ParsePosition) |
Анализирует строку. |
| Parse(String) |
Анализирует текст с начала заданной строки для создания массива объектов. |
| ParseObject(String, ParsePosition) |
Анализирует текст из строки для создания массива объектов. |
| ParseObject(String) |
Анализирует текст с начала заданной строки для создания объекта. (Унаследовано от _Format) |
| SetFormat(Int32, _Format) |
Задает формат, используемый для элемента форматирования с заданным индексом элементов формата в строке шаблона, заданной ранее. |
| SetFormatByArgumentIndex(Int32, _Format) |
Задает формат, используемый для элементов форматирования в строке шаблона, которая использует заданный индекс аргументов. |
| SetFormats(_Format[]) |
Задает форматы, используемые для элементов формата в ранее заданной строке шаблона. |
| SetFormatsByArgumentIndex(_Format[]) |
Задает форматы, используемые для значений, передаваемых в |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToPattern() |
Возвращает шаблон, представляющий текущее состояние формата сообщения. |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.> (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |