MessageFormat 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
<strong>[icu enhancement]</strong> ICU's replacement for 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 enhancement]</strong> ICU's replacement for java.text.MessageFormat. ICU와 관련된 메서드, 필드 및 기타 기능에는 '<strong>[icu]</strong>'이라는 레이블이 지정됩니다.
MessageFormat은 선택적 인수(변수/자리 표시자)를 사용하여 사용자에게 표시할 문자열을 준비합니다. 인수는 어떤 순서로든 발생할 수 있으며, 이는 문법이 다른 언어로 번역하는 데 필요합니다.
MessageFormat은 {curly braces}에 인수가 있는 em<패턴>/em< 문자열에서 생성>되며 형식이 지정된 값으로 바뀝니다.
MessageFormat는 스타일 팩터리 메서드가 아닌 생성자 중 하나를 사용하여 개체를 만들 Format 수 있다는 점에서 다른 MessageFormat 클래스와 getInstance 다릅니다. 팩터리 메서드 자체는 로캘 관련 동작을 구현하지 않으므로 필요하지 MessageFormat 않습니다. 모든 로캘 관련 동작은 사용자가 제공하는 패턴 및 삽입된 인수에 사용되는 하위 폼에 의해 정의됩니다.
인수의 이름을 지정하거나(식별자 사용) 번호 매기기(작은 ASCII 숫자 정수 사용)할 수 있습니다. 일부 API 메서드는 인수 번호에서만 작동하며 패턴에 명명된 인수가 있는 경우 예외를 throw합니다(참조 #usesNamedArguments()).
인수는 형식 형식을 지정하지 않을 수 있습니다. 이 경우 숫자 값은 기본값(로캘의 경우) NumberFormat으로 서식이 지정되고 날짜 값은 기본값(로캘의 경우) DateFormat으로 서식이 지정되고 다른 값의 경우 toString() 값이 사용됩니다.
인수는 지정된 Format 개체가 만들어지고 캐시되고 사용되는 "단순" 형식을 지정할 수 있습니다.
인수에는 중첩된 MessageFormat 하위 패턴이 있는 "복합" 형식이 있을 수 있습니다. 서식을 지정하는 동안 인수 값에 따라 이러한 하위 메시지 중 하나가 선택되고 재귀적으로 형식이 지정됩니다.
생성 후 최상위 인수에 대해 사용자 지정 Format 개체를 설정하여 해당 인수에 대한 기본 서식 지정 및 구문 분석 동작을 재정의할 수 있습니다. 그러나 패턴 문자열에 형식 없는 인수를 작성하고 미리 서식이 지정된 문자열 값을 제공하여 사용자 지정 서식 지정을 더 간단하게 수행할 수 있습니다.
서식을 지정할 때 MessageFormat은 인수 값 컬렉션을 사용하고 출력 문자열을 씁니다. 인수 값은 배열(패턴에 번호가 매겨진 인수만 포함된 경우) 또는 맵(명명된 인수와 번호가 매겨진 인수 모두에 대해 작동)으로 전달될 수 있습니다.
각 인수는 배열 인덱스 또는 맵 키로 입력 값 중 하나와 일치하고 패턴 사양에 따라 형식이 지정됩니다(또는 사용자 지정 Format 개체가 설정된 경우). 번호가 매겨진 패턴 인수는 해당 숫자를 ASCII-decimal-digit 문자열로 포함하는 지도 키와 일치합니다(선행 0이 아님).
<h3>"patterns">Patterns and their Interpretation</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})로 시작하여 다음 단일 아포스트로피까지 계속됩니다. 따옴표 붙은 문자열의 내부 또는 외부에 있는 이중 ASCII 아포스트로피는 하나의 리터럴 아포스트로피를 나타냅니다.
<li>Quotable 구문 문자는 모든 messageText 부분의 {curly braces}와 pluralStyle 바로 안에 있는 messageText의 '#' 기호 및 choiceStyle 바로 안에 있는 messageText의 '|' 기호입니다.
<li>See also MessagePattern.ApostropheMode<li>In argStyleText, 모든 단일 ASCII 아포스트로피가 시작되고 따옴표 붙은 리터럴 텍스트로 끝나며, 따옴표가 지정되지 않은 {curly braces}는 일치하는 쌍으로 발생해야 합니다.
</ul>
권장 사항: 사람이 읽을 수 있는 텍스트에 실제 아포스트로피(작은따옴표) 문자 \\u2019 사용하고 MessageFormat의 따옴표처럼 프로그램 구문에서만 ASCII 아포스트로피(\\u0027 ' )를 사용합니다. 유니코드 표준의 U+0027 아포스트로피에 대한 주석을 참조하세요.
choice 인수 형식은 더 이상 사용되지 않습니다. 적절한 복수 선택 영역에 인수를 plural 사용하고 고정된 선택 집합 중에서 단순 선택을 위한 인수를 사용합니다select.
및 argType 값은 argStyle 형식 요소에 대한 인스턴스를 Format 만드는 데 사용됩니다. 다음 표에서는 값이 Format 인스턴스에 매핑되는 방법을 보여 줍니다. 테이블에 표시되지 않는 조합이 잘못되었습니다. 사용되는 argStyleText Format 하위 클래스에 유효한 패턴 문자열이어야 합니다.
<table border=1><tr><th>argType <th>argStyle <th>resulting Format 개체 <tr><td colspan=2>(none)<td>null<tr tr tr td><rowspan=5>number<td>(none)<td>NumberFormat.getInstance(getLocale())<tr><td td>integer<>NumberFormat.getIntegerInstance(getLocale())<tr><td td>currency<>NumberFormat.getCurrencyInstance(getLocale())<tr tr><td td td>percent<td tr td tr tr td>NumberFormat.getPercentInstance(getLocale())<tr><td>argStyleText<td>new DecimalFormat(argStyleText, new DecimalFormatSymbols(getLocale()))<tr td><rowspan=6>date<td>(none)<td>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><td>short<td>DateFormat.getDateInstance(DateFormat.SHORT, getLocale())<td><td>medium<td>DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())<tr><>long<td td>DateFormat.getDateInstance(DateFormat.LONG, getLocale())<td><>full<>DateFormat.getDateInstance(DateFormat.FULL, getLocale())<td tr td><>td argStyleText <td>new SimpleDateFormat(argStyleText, getLocale())<tr><td rowspan=6>time<td>(none)<td>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<td><td>short<td>DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())<td><td>medium<>DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())<td><>long<td td>DateFormat.getTimeInstance(DateFormat.LONG, getLocale())<td><td>full<>DateFormat.getTimeInstance(DateFormat.FULL, getLocale())<tr tr td><>argStyleText <td>new SimpleDateFormat(argStyleText, getLocale())<tr><td td>spellout<>argStyleText (optional)<td td>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.SPELLOUT) <br> .setDefaultRuleset(argStyleText);<td><td>ordinal<>td<>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.ORDINAL) <br> .setDefaultRuleset(argStyleText);td<>td<>duration<>td<>new RuleBasedNumberFormat(getLocale(), RuleBasedNumberFormat.DURATION) <br> .setDefaultRuleset(argStyleText);/table<>
<h4>"diffsjdk">java.text.MessageFormat</h4의 차이점>
ICU MessageFormat은 명명된 인수와 번호 매기기 인수를 모두 지원하지만 JDK MessageFormat은 번호가 매겨진 인수만 지원합니다. 명명된 인수를 사용하면 패턴을 더 쉽게 읽을 수 있습니다.
ICU는 사용자 친화적인 아포스트로피 따옴표 구문을 구현합니다. 메시지 텍스트에서 아포스트로피는 구문 문자 바로 앞에 오는 경우에만 리터럴 텍스트를 따옴표로 묶기 시작합니다(주로 {중괄호}).<br> JDK MessageFormat에서 아포스트로피는 항상 "don't" 및 "aujourd'hui"와 같은 공통 텍스트를 "don't" 및 "aujourd'hui"와 같은 두 배의 아포스트로피로 작성해야 하는 따옴표를 시작합니다. 자세한 내용은 MessagePattern.ApostropheMode 를 참조하세요.
ICU는 choiceArg, pluralArg 또는 selectArg에 대한 ChoiceFormat 개체를 만들지 않고 이러한 인수 자체를 처리합니다. 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>
복수 형식을 포함하는 메시지의 경우 복수 인수를 사용할 수 있습니다.
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>"synchronization">Synchronization</h4>
MessageFormats가 동기화되지 않습니다. 각 스레드에 대해 별도의 형식 인스턴스를 만드는 것이 좋습니다. 여러 스레드가 동시에 형식에 액세스하는 경우 외부에서 동기화되어야 합니다.
에 대한 android.icu.text.MessageFormatJava 설명서
이 페이지의 일부는 만들고 공유한 작업을 기반으로 하며 에 설명된 조건에 따라 사용됩니다.
생성자
| Name | Description |
|---|---|
| MessageFormat(IntPtr, JniHandleOwnership) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| MessageFormat(String, Locale) |
지정된 로캘 및 패턴에 대한 MessageFormat을 생성합니다. |
| MessageFormat(String, ULocale) |
지정된 로캘 및 패턴에 대한 MessageFormat을 생성합니다. |
| MessageFormat(String) |
기본 |
속성
| Name | Description |
|---|---|
| ApostropheMode |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ArgumentNames |
<strong>[icu]</strong> 최상위 인수 이름을 반환합니다. |
| Class |
이 |
| Handle |
기본 Android 인스턴스에 대한 핸들입니다. (다음에서 상속됨 Object) |
| JniIdentityHashCode |
interop 런타임에 의해 이 Java 피어에 할당된 ID 해시 코드를 가져옵니다. (다음에서 상속됨 Object) |
| JniPeerMembers |
<strong>[icu enhancement]</strong> ICU's replacement for |
| Locale |
하위 폼을 만들거나 비교할 때 사용되는 로캘을 반환합니다. -또는- 인수 Format 개체를 만드는 데 사용할 로캘을 설정합니다. |
| PeerReference |
이 Java 피어에 대한 JNI 개체 참조를 가져옵니다. (다음에서 상속됨 Object) |
| ThresholdClass |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ThresholdType |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ULocale |
<strong>[icu]</strong> 인수 Format 개체를 만들 때 사용되는 로캘을 반환합니다. |
메서드
| Name | Description |
|---|---|
| ApplyPattern(String, MessagePattern+ApostropheMode) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| ApplyPattern(String) |
이 메시지 형식에서 사용하는 패턴을 설정합니다. |
| AutoQuoteApostrophe(String) |
<strong>[icu]</strong> 은 '아포스트로피 친화적인' 패턴을 표준 패턴으로 변환합니다. |
| Clone() |
이 개체의 복사본을 만들고 반환합니다. (다음에서 상속됨 _Format) |
| Dispose() |
이 Java 피어에서 보유한 리소스를 해제합니다. (다음에서 상속됨 Object) |
| Dispose(Boolean) |
이 Java 피어에서 보유한 리소스를 해제합니다. (다음에서 상속됨 Object) |
| Equals(Object) |
다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다. (다음에서 상속됨 Object) |
| Format(IDictionary<String,Object>, StringBuffer, FieldPosition) |
개체 맵의 서식을 지정하고 형식이 지정된 개체로 대체된 인수와 함께 '의 패턴을 제공된 |
| Format(Object, StringBuffer, FieldPosition) |
개체의 맵 또는 배열에 서식을 지정하고 형식 요소가 형식이 지정된 개체로 대체된 '의 패턴을 제공된 |
| Format(Object) |
문자열을 생성할 개체의 형식을 지정합니다. (다음에서 상속됨 _Format) |
| Format(Object[], StringBuffer, FieldPosition) |
개체 배열의 서식을 지정하고 형식이 지정된 개체로 대체된 인수와 함께 '의 패턴을 제공된 |
| Format(String, IDictionary<String,Object>) |
지정된 패턴으로 MessageFormat을 만들고 이를 사용하여 지정된 인수의 서식을 지정합니다. |
| Format(String, Object[]) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| FormatToCharacterIterator(Object) |
를 생성하는 개체의 형식을 지정합니다 |
| GetFormatByArgumentName(String) |
<strong>[icu]</strong> 지정된 인수 이름과 연결된 첫 번째 최상위 형식을 반환합니다. |
| GetFormats() |
이전에 설정한 패턴 문자열의 서식 요소에 사용되는 Format 개체를 반환합니다. |
| GetFormatsByArgumentIndex() |
메서드로 전달되거나 메서드에서 |
| GetHashCode() |
개체에 대한 해시 코드 값을 반환합니다. (다음에서 상속됨 Object) |
| JavaFinalize() |
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. (다음에서 상속됨 Object) |
| Notify() |
이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다. (다음에서 상속됨 Object) |
| NotifyAll() |
이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다. (다음에서 상속됨 Object) |
| Parse(String, ParsePosition) |
문자열을 구문 분석합니다. |
| Parse(String) |
지정된 문자열의 시작 부분에서 텍스트를 구문 분석하여 개체 배열을 생성합니다. |
| ParseObject(String, ParsePosition) |
문자열의 텍스트를 구문 분석하여 개체 배열 또는 맵을 생성합니다. |
| ParseObject(String) |
지정된 문자열의 시작 부분에서 텍스트를 구문 분석하여 개체를 생성합니다. (다음에서 상속됨 _Format) |
| ParseToMap(String, ParsePosition) |
<strong>[icu]</strong> 는 문자열을 구문 분석하여 결과를 맵에 반환합니다. |
| ParseToMap(String) |
<strong>[icu]</strong> 는 지정된 문자열의 시작 부분에서 텍스트를 구문 분석하여 인수에서 값으로 맵을 생성합니다. |
| SetFormat(Int32, _Format) |
이전에 설정된 패턴 문자열 내에서 지정된 형식 요소 인덱스가 있는 Format 요소에 사용할 Format 개체를 설정합니다. |
| SetFormatByArgumentIndex(Int32, _Format) |
지정된 인수 인덱을 사용하는 이전에 설정된 패턴 문자열 내의 서식 요소에 사용할 Format 개체를 설정합니다. |
| SetFormatByArgumentName(String, _Format) |
<strong>[icu]</strong> 지정된 인수 이름을 사용하는 이전에 설정된 패턴 문자열 내의 서식 요소에 사용할 Format 개체를 설정합니다. |
| SetFormats(_Format[]) |
이전에 설정한 패턴 문자열의 서식 요소에 사용할 Format 개체를 설정합니다. |
| SetFormatsByArgumentIndex(_Format[]) |
메서드로 전달되거나 메서드에서 |
| SetFormatsByArgumentName(IDictionary<String,_Format>) |
<strong>[icu]</strong> 메서드로 전달되거나 메서드에서 |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle 속성을 설정합니다. (다음에서 상속됨 Object) |
| SetLocale(ULocale) |
인수 형식 개체를 만드는 데 사용할 로캘을 설정합니다. |
| ToArray<T>() |
이 Java 배열 래퍼에서 관리되는 배열을 만듭니다. (다음에서 상속됨 Object) |
| ToPattern() |
적용된 패턴 문자열을 반환합니다. |
| ToString() |
개체의 문자열 표현을 반환합니다. (다음에서 상속됨 Object) |
| UnregisterFromRuntime() |
interop 런타임에서 이 Java 피어의 등록을 취소합니다. (다음에서 상속됨 Object) |
| UsesNamedArguments() |
<strong>[icu]</strong> Returns true이면 이 MessageFormat에서 명명된 인수를 사용하고, 그렇지 않으면 false를 반환합니다. |
| Wait() |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받><거나 ><>중단/종료<합니다.> (다음에서 상속됨 Object) |
| Wait(Int64, Int32) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 >중단/<종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
| Wait(Int64) |
현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 >중단/<종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다. (다음에서 상속됨 Object) |
명시적 인터페이스 구현
| Name | Description |
|---|---|
| IJavaPeerable.Disposed() |
interop 런타임에 이 관리되는 피어가 삭제되었음을 알릴 수 있습니다. (다음에서 상속됨 Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
다른 관리되는 참조에 의해 유지되지 않는 한 이 Java 피어를 해제합니다. (다음에서 상속됨 Object) |
| IJavaPeerable.Finalized() |
interop 런타임에 이 관리되는 피어가 완료되었음을 알릴 수 있습니다. (다음에서 상속됨 Object) |
| IJavaPeerable.JniManagedPeerState |
이 관리되는 피어와 해당 JNI 참조 간의 관계를 설명하는 상태를 가져옵니다. (다음에서 상속됨 Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
이 Java 피어에 대한 interop ID 해시 코드를 설정합니다. (다음에서 상속됨 Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
이 Java 피어에 대한 관리되는 및 JNI 피어 상태를 설정합니다. (다음에서 상속됨 Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
이 관리되는 피어에서 사용하는 JNI 개체 참조를 설정합니다. (다음에서 상속됨 Object) |
확장명 메서드
| Name | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
인스턴스 |
| JavaAs<TResult>(IJavaPeerable) |
형식 |
| JavaCast<TResult>(IJavaObject) |
Android 런타임 확인 형식 변환을 수행합니다. |
| JavaCast<TResult>(IJavaObject) |
<strong>[icu enhancement]</strong> ICU's replacement for |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
형식 |