MessageFormat Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
MessageFormat menyediakan sarana untuk menghasilkan pesan yang digabungkan dengan cara bahasa netral.
[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
- Warisan
- Atribut
Keterangan
MessageFormat menyediakan sarana untuk menghasilkan pesan yang digabungkan dengan cara bahasa netral. Gunakan ini untuk membuat pesan yang ditampilkan untuk pengguna akhir.
MessageFormat mengambil sekumpulan objek, memformatnya, lalu menyisipkan string yang diformat ke dalam pola di tempat yang sesuai.
<Strong>Note:</strong>MessageFormat berbeda dari kelas lain Format di mana Anda membuat MessageFormat objek dengan salah satu konstruktornya (bukan dengan getInstance metode pabrik gaya). Metode pabrik tidak diperlukan karena MessageFormat itu sendiri tidak menerapkan perilaku spesifik lokal. Perilaku spesifik lokal apa pun didefinisikan oleh pola yang Anda berikan serta subformat yang digunakan untuk argumen yang disisipkan.
<h2>"patterns">Patterns and Their Interpretation</h2>
MessageFormat menggunakan pola formulir berikut: <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>
Dalam String, sepasang tanda kutip tunggal dapat digunakan untuk mengutip karakter arbitrer apa pun kecuali tanda kutip tunggal. Misalnya, string "'{0}'" pola mewakili string "{0}", bukan FormatElement. Tanda kutip tunggal itu sendiri harus diwakili oleh tanda kutip '' tunggal ganda di seluruh String. Misalnya, string "'{''}'" pola ditafsirkan sebagai urutan '{ (awal kutipan dan kurung kurawal kiri), '' (tanda kurung kurawal tunggal), dan }' (kurung kurawal kanan dan akhir kutipan), <em>tidak</em>'{' dan '}' (kurung kurung kurawal kiri dan kanan yang dikutip): mewakili string "{'}", <em>tidak</em>"{}".
SubformatPattern ditafsirkan oleh subformat yang sesuai, dan aturan pola yang bergantung pada subformat berlaku. Misalnya, string "{1,number,<u>$'#',##</u>}" pola (SubformatPattern dengan garis bawah) akan menghasilkan format angka dengan tanda pon yang dikutip, dengan hasil seperti: "$#31,45". Lihat dokumentasi setiap Format subkelas untuk detailnya.
Setiap kutipan yang tidak cocok diperlakukan sebagai tertutup di akhir pola yang diberikan. Misalnya, string "'{0pola "} diperlakukan sebagai pola "'{0'"}.
Setiap kurung kurawal dalam pola yang tidak dikutip harus seimbang. Misalnya, "ab {0} de" dan "ab '}' de" merupakan pola yang valid, tetapi "ab {0'}' de", "ab } de" dan "''{''" tidak.
<dl><dt><b>Warning:</b><dd>Aturan untuk menggunakan tanda kutip dalam pola format pesan sayangnya telah terbukti agak membingungkan. Secara khusus, tidak selalu jelas bagi pelokal apakah tanda kutip tunggal perlu digandakan atau tidak. Pastikan untuk menginformasikan pelokalan tentang aturan, dan beri tahu mereka (misalnya, dengan menggunakan komentar dalam file sumber bundel sumber daya) string mana yang akan diproses oleh MessageFormat. Perhatikan bahwa pelokalan mungkin perlu menggunakan tanda kutip tunggal dalam string yang diterjemahkan di mana versi asli tidak memilikinya.
</Dl>
Nilai ArgumentIndex adalah bilangan bulat non-negatif yang ditulis menggunakan digit '0' melalui '9', dan mewakili indeks ke dalam arguments array yang diteruskan ke format metode atau array hasil yang dikembalikan oleh parse metode .
Nilai FormatType dan FormatStyle digunakan untuk membuat Format instans untuk elemen format. Tabel berikut menunjukkan bagaimana nilai dipetakan ke Format instans. Kombinasi yang tidak ditampilkan dalam tabel ilegal.
SubformatPattern harus berupa string pola yang valid untuk Format subkelas yang digunakan.
<table class="plain"><caption style="display:none">Show 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">(tidak ada)<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())<tr><th scope="row" style="text-weight: normal">integer<td>NumberFormat#getIntegerInstance(Locale) NumberFormat.getIntegerInstance(getLocale())<tr><th scope="row" style="text-weight: normal">currency<td>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>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#DEFAULT, getLocale())<tr><th scope="row" style="text-weight: normal">short<td>DateFormat#getTimeInstance(int,Locale) DateFormat.getTimeInstance(DateFormat#SHORT, getLocale())<tr><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>Informasi< Penggunaan/h3>
Berikut adalah beberapa contoh penggunaan. Dalam program internasional nyata, pola format pesan dan string statis lainnya, tentu saja akan diperoleh dari bundel sumber daya. Parameter lain akan ditentukan secara dinamis pada runtime.
Contoh pertama menggunakan metode MessageFormat.formatstatis , yang secara internal membuat MessageFormat untuk penggunaan satu kali: <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> Outputnya adalah: <blockquote>
At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
</blockquote>
Contoh berikut membuat instans MessageFormat yang dapat digunakan berulang kali: <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> Output dengan nilai yang berbeda untuk 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>
Untuk pola yang lebih canggih, Anda dapat menggunakan untuk menghasilkan bentuk yang ChoiceFormat benar untuk tunggal dan jamak: <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> Output dengan nilai yang berbeda untuk fileCount: <blockquote>
The disk "MyDisk" contains no files.
The disk "MyDisk" contains one file.
The disk "MyDisk" contains 1,273 files.
</blockquote>
Anda dapat membuat ChoiceFormat secara terprogram, seperti dalam contoh di atas, atau dengan menggunakan pola. Lihat ChoiceFormat untuk informasi lebih lanjut.
<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> Seperti yang kita lihat di atas, string yang ChoiceFormat dihasilkan oleh in MessageFormat diperlakukan sebagai istimewa; kemunculan '{' digunakan untuk menunjukkan subformat, dan menyebabkan rekursi. Jika Anda membuat dan MessageFormatChoiceFormat secara terprogram (alih-alih menggunakan pola string), maka berhati-hatilah untuk tidak menghasilkan format yang berulang pada dirinya sendiri, yang akan menyebabkan perulangan tak terbatas.
Ketika satu argumen diurai lebih dari sekali dalam string, kecocokan terakhir akan menjadi hasil akhir penguraian. Misalnya, <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>
Demikian juga, mengurai dengan objek menggunakan pola yang MessageFormat berisi beberapa kemunculan argumen yang sama akan mengembalikan kecocokan terakhir. Misalnya, <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>
Format pesan tidak disinkronkan. Disarankan untuk membuat instans format terpisah untuk setiap utas. Jika beberapa utas mengakses format secara bersamaan, utas tersebut harus disinkronkan secara eksternal.
Ditambahkan dalam 1.1.
Java dokumentasi untuk java.text.MessageFormat.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Konstruktor
| Nama | Deskripsi |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
Konstruktor yang digunakan saat membuat representasi terkelola objek JNI; dipanggil oleh runtime. |
| MessageFormat(String, Locale) |
Membuat MessageFormat untuk lokal dan pola yang ditentukan. |
| MessageFormat(String) |
Membuat MessageFormat untuk lokal default |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| Locale |
Mendapatkan lokal yang digunakan saat membuat atau membandingkan subformat. -or- Mengatur lokal yang akan digunakan saat membuat atau membandingkan subformat. |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |
Metode
| Nama | Deskripsi |
|---|---|
| ApplyPattern(String) |
Menyetel pola yang digunakan oleh format pesan ini. |
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari _Format) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| Dispose(Boolean) |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| Format(Object, StringBuffer, FieldPosition) |
Memformat array objek dan menambahkan |
| Format(Object) |
Memformat objek untuk menghasilkan string. (Diperoleh dari _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
Memformat array objek dan menambahkan |
| Format(String, Object[]) |
Memformat array objek dan menambahkan pola kode<MessageFormat/code>, dengan elemen format digantikan oleh objek yang diformat<, ke kode>yang disediakan <StringBuffer>/code<.> |
| FormatToCharacterIterator(Object) |
Memformat Objek yang |
| GetFormats() |
Mendapatkan format yang digunakan untuk elemen format dalam string pola yang ditetapkan sebelumnya. |
| GetFormatsByArgumentIndex() |
Mendapatkan format yang digunakan untuk nilai yang diteruskan ke metode |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| Parse(String, ParsePosition) |
Mengurai string. |
| Parse(String) |
Mengurai teks dari awal string yang diberikan untuk menghasilkan array objek. |
| ParseObject(String, ParsePosition) |
Mengurai teks dari string untuk menghasilkan array objek. |
| ParseObject(String) |
Mengurai teks dari awal string yang diberikan untuk menghasilkan objek. (Diperoleh dari _Format) |
| SetFormat(Int32, _Format) |
Mengatur format yang akan digunakan untuk elemen format dengan indeks elemen format yang diberikan dalam string pola yang ditetapkan sebelumnya. |
| SetFormatByArgumentIndex(Int32, _Format) |
Mengatur format yang akan digunakan untuk elemen format dalam string pola yang ditetapkan sebelumnya yang menggunakan indeks argumen yang diberikan. |
| SetFormats(_Format[]) |
Mengatur format yang akan digunakan untuk elemen format dalam string pola yang ditetapkan sebelumnya. |
| SetFormatsByArgumentIndex(_Format[]) |
Mengatur format yang akan digunakan untuk nilai yang diteruskan ke metode |
| SetHandle(IntPtr, JniHandleOwnership) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToPattern() |
Mengembalikan pola yang mewakili status format pesan saat ini. |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
Membatalkan pendaftaran peer Java ini dari runtime interop. (Diperoleh dari Object) |
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |