クラスListFormat
- すべての実装されたインタフェース:
Serializable,Cloneable
ListFormatは、ロケール依存の方法で文字列のリストを書式設定または解析します。 ListFormatを使用して、エンド・ユーザーに表示される文字列のリストを作成します。 たとえば、3つの平日("月曜日"、"水曜日"、"金曜日"など)のリストを包含リスト・タイプで"月曜日、水曜日、金曜日"として表示します。 このクラスは、Unicode Consortiumの「パターンのリスト」のLDML仕様で定義された機能を提供します。
3つのフォーマット・タイプが用意されています: STANDARD、ORおよびUNIT。文字列と接続する単語(ある場合)の間の句読点を決定します。 また、タイプごとに3つの書式設定スタイルが提供されます: FULL、SHORTおよびNARROW。文字列の省略形(または非表示)に適しています。 次のスニペットは、STANDARD型およびFULLスタイルを使用して、米国英語の文字列"Foo", "Bar", "Baz"のリストを書式設定する例です。
ListFormat.getInstance(Locale.US, ListFormat.Type.STANDARD, ListFormat.Style.FULL)
.format(List.of("Foo", "Bar", "Baz"))
| FULL | SHORT | NARROW | |
|---|---|---|---|
| STANDARD | Foo、Bar、Baz | Foo、Bar、& Baz | Foo、Bar、Baz |
| OR | Foo、Bar、またはBaz | Foo、Bar、またはBaz | Foo、Bar、またはBaz |
| UNIT | Foo、Bar、Baz | Foo、Bar、Baz | Foo Bar Baz |
または、ロケール、タイプまたはスタイル(あるいはその両方)の独立インスタンスは、getInstance(String[])を使用して作成できます。 メソッドに対するString配列は、書式設定された文字列のstart/middle/end部分の区切りパターンと、2つまたは3つの要素に対するオプションの特殊パターンを指定します。 詳細は、メソッドの説明を参照してください。
解析時に、入力文字列の区切りシーケンスなど、入力文字列にあいまいさが見つかった場合、結果は同じフォーマットでフォーマットされても、入力文字列は再生成されません。 たとえば、2つの要素の文字列リスト"a、b、"、"c"は"a、bおよびc"としてフォーマットされますが、"a"、"b"、"c"という3つの要素として解析できます。
- 実装要件:
- このクラスは不変でスレッドセーフです
- 導入されたバージョン:
- 22
- 外部仕様
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static enumstatic enumクラスjava.text.Formatで宣言されたネストされたクラス/インタフェース
Format.Field -
メソッドのサマリー
修飾子と型メソッド説明boolean指定されたオブジェクトをこのListFormatと比較し、等しいかどうかを確認します。format(Object obj, StringBuffer toAppendTo, FieldPosition pos) オブジェクトをフォーマットし、指定された文字列バッファに結果のテキストを追加します。入力文字列とこのListFormatのパターンを連結した文字列を返します。static Locale[]ListFormatをサポートする使用可能なロケールを返します。static ListFormatデフォルトのFORMAT Locale、STANDARD型およびFULLスタイルのListFormatオブジェクトを返します。static ListFormatgetInstance(String[] patterns) 指定されたパターンのListFormatオブジェクトを返します。static ListFormatgetInstance(Locale locale, ListFormat.Type type, ListFormat.Style style) このListFormatのLocaleを返します。String[]このListFormatで使用されるパターンを返します。source文字列から解析された文字列のリストを返します。parseObject(String source, ParsePosition parsePos) 文字列からテキストを解析して文字列のリストを生成します。toString()デバッグ用に、このListFormatを識別する文字列を返します。クラスjava.text.Formatで宣言されたメソッド
clone, format, formatToCharacterIterator, parseObject
-
メソッドの詳細
-
getAvailableLocales
public static Locale[] getAvailableLocales()ListFormatをサポートする使用可能なロケールを返します。- 戻り値:
- ListFormatをサポートする使用可能なロケール
-
getInstance
public static ListFormat getInstance()デフォルトのFORMAT Locale、STANDARD型およびFULLスタイルのListFormatオブジェクトを返します。- 戻り値:
- デフォルトの
FORMAT Locale、STANDARD型およびFULLスタイルのListFormatオブジェクト
-
getInstance
public static ListFormat getInstance(Locale locale, ListFormat.Type type, ListFormat.Style style) - パラメータ:
locale- 使用するLocale、null以外type- ListFormatのタイプ。STANDARD、ORまたはUNITのいずれか(null以外)style- ListFormatのスタイル。FULL、SHORTまたはNARROWのいずれか(null以外)- 戻り値:
- 指定された
Locale、TypeおよびStyleのListFormatオブジェクト - スロー:
NullPointerException- 引数が1つでもnullの場合
-
getInstance
public static ListFormat getInstance(String[] patterns) 指定されたパターンのListFormatオブジェクトを返します。このファクトリは、ランタイムに
Locale、TypeまたはStyleの適切なパターンを提供させるのではなく、カスタマイズされたパターン配列に基づいてインスタンスを返します。パターン配列には、Unicode LDMLの
listPatternPartに対応する5つの文字列パターン("start"、"真ん中"、"end"、2つの要素、および3つの要素パターン)が含まれている必要があります。 各パターンには、フォーマット時に渡された入力文字列で置換される"{0}"および"{1}" (3つの要素パターンの場合は"{2}")プレースホルダーが含まれます。 パターン配列の長さが5でない場合は、IllegalArgumentExceptionがスローされます。各パターン文字列は、最初に次のように解析されます。 カッコ内のリテラル("start_before"など)はオプションです。
2つまたは3つのパターン文字列が空の場合は、それぞれstart := (start_before){0}start_between{1} middle := {0}middle_between{1} end := {0}end_between{1}(end_after) two := (two_before){0}two_between{1}(two_after) three := (three_before){0}three_between1{1}three_between2{2}(three_after)"(start_before){0}end_between{1}(end_after)"、"(start_before){0}start_between{1}end_between{2}(end_after)"に戻ります。 start、middle、end、2または3のパターン文字列の解析に失敗すると、IllegalArgumentExceptionがスローされます。書式設定時に、
n要素を含む入力文字列リストは、要素の数に基づいて上のプレースホルダーに置換されます。
たとえば、次の表は、n = 1: {0} n = 2: parsed pattern for "two" n = 3: parsed pattern for "three" n > 3: (start_before){0}start_between{1}middle_between{2} ... middle_between{m}end_between{n}(end_after)STANDARD型、FULLスタイル(米国英語)に相当するパターン配列を示しています。
上のパターン配列を持つ結果の書式設定された文字列を次に示します。パターン種類 パターン文字列 start "{0}, {1}" 中央 "{0}, {1}" end "{0}および{1}" two "{0}および {1}" 3 "" 入力文字列リスト 書式設定済文字列 "Foo", "Bar", "Baz", "Qux" "Foo、Bar、Baz、Qux" "Foo", "Bar", "Baz" "Foo、Bar、Baz" "Foo", "Bar" "FooとBar" "Foo" "Foo" - パラメータ:
patterns- パターンの配列、null以外- 戻り値:
- 指定されたパターンのListFormatオブジェクト
- スロー:
IllegalArgumentException- 長さpatterns配列が5でない場合、またはstart,middle,end,twoまたはthreeパターンのいずれも解析できない場合。NullPointerException-patternsがNULLの場合。
-
getLocale
public Locale getLocale()このListFormatのLocaleを返します。localeは、getInstance(Locale, Type, Style)またはgetInstance(String[])によって定義されます。- 戻り値:
- このListFormatの
Locale
-
getPatterns
public String[] getPatterns()このListFormatで使用されるパターンを返します。patternsは、getInstance(Locale, Type, Style)またはgetInstance(String[])によって定義されます。- 戻り値:
- このListFormatで使用されるパターン
-
format
入力文字列とこのListFormatのパターンを連結した文字列を返します。- APIのノート:
- 長いリストからの文字列のフォーマットは、メモリーまたは文字列サイズを超える可能性があります。
- パラメータ:
input- フォーマットする入力文字列のリスト。 このリストには少なくとも1つのString要素が必要です。そうしないと、IllegalArgumentExceptionがスローされます。- 戻り値:
- この
ListFormatのパターンと連結された入力文字列で構成される文字列 - スロー:
IllegalArgumentException-inputの長さがゼロの場合。NullPointerException-inputがNULLの場合。
-
format
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) オブジェクトをフォーマットし、指定された文字列バッファに結果のテキストを追加します。 オブジェクトは、リストまたはオブジェクトの配列である必要があります。- 定義:
format、クラスFormat- APIのノート:
- 長すぎるリストまたは配列から文字列を書式設定すると、メモリーまたは文字列サイズを超える可能性があります。
- パラメータ:
obj- フォーマットするオブジェクト リストまたはオブジェクトの配列である必要があります。toAppendTo- テキストを追加する位置pos- Ignored. ListFormatでは使用されません。 nullの場合もあります- 戻り値:
toAppendToとして渡される文字列バッファ。フォーマットされたテキストが追加される- スロー:
NullPointerException-objまたはtoAppendToがnullの場合IllegalArgumentException-objがListでもObjectの配列でもない場合、または長さがゼロの場合。
-
parse
public List<String> parse(String source) throws ParseException source文字列から解析された文字列のリストを返します。 入力文字列にあいまいなデリミタが含まれている場合、format(List)およびこのメソッドはラウンドトリップを保証しない場合があります。 たとえば、2つの要素のStringリスト"a, b,", "c"は、"a, b, and c"としてフォーマットされますが、3つの要素"a", "b", "c"として解析できます。- パラメータ:
source- 解析する文字列。nullではありません。- 戻り値:
source文字列の解析済文字列リスト- スロー:
ParseException- 解析に失敗した場合NullPointerException- ソースがnullの場合
-
parseObject
public Object parseObject(String source, ParsePosition parsePos) 文字列からテキストを解析して文字列のリストを生成します。このメソッドは、
parsePosで指定された索引から始まるテキストを解析しようとします。 解析が成功すると、parsePosの索引は、最後に(解析では、必ずしも文字列の末尾までのすべての文字が使用されるわけではありません。)が使用された文字の後に索引に更新され、解析されたオブジェクトが戻されます。 更新されたparsePosは、追加テキストを解析する次のコールの開始点を示すために使用できます。 エラーが発生した場合、parsePosの索引は変更されず、parsePosのエラー索引は、エラーが発生した文字の索引に設定され、nullが返されます。 リスト解析の詳細は、parse(String)メソッドを参照してください。- 定義:
parseObject、クラスFormat- パラメータ:
source- 文字列。その一部を解析する必要があります。parsePos- 前述の索引およびエラー索引情報を含むParsePositionオブジェクト。- 戻り値:
sourceから解析された文字列のリスト。 エラーの場合はnullを返す。- スロー:
NullPointerException-sourceまたはparsePosがnullであるかどうか。IndexOutOfBoundsException-parsePosで指定された開始索引がsourceの外部にある場合。
-
equals
public boolean equals(Object obj) 指定されたオブジェクトをこのListFormatと比較し、等しいかどうかを確認します。 指定されたオブジェクトがListFormatでもあり、getLocale()およびgetPatterns()から戻されるlocaleおよびpatternsが等しい場合は、trueを返します。 -
toString
-