クラスListFormat

java.lang.Object
java.text.Format
java.text.ListFormat
すべての実装されたインタフェース:
Serializable, Cloneable

public final class ListFormat extends Format
ListFormatは、ロケール依存の方法で文字列のリストを書式設定または解析します。 ListFormatを使用して、エンド・ユーザーに表示される文字列のリストを作成します。 たとえば、3つの平日("月曜日"、"水曜日"、"金曜日"など)のリストを包含リスト・タイプで"月曜日、水曜日、金曜日"として表示します。 このクラスは、Unicode Consortiumの「パターンのリスト」のLDML仕様で定義された機能を提供します。

3つのフォーマット・タイプが用意されています: STANDARDORおよびUNIT。文字列と接続する単語(ある場合)の間の句読点を決定します。 また、タイプごとに3つの書式設定スタイルが提供されます: FULLSHORTおよびNARROW。文字列の省略形(または非表示)に適しています。 次のスニペットは、STANDARD型およびFULLスタイルを使用して、米国英語の文字列"Foo", "Bar", "Baz"のリストを書式設定する例です。

ListFormat.getInstance(Locale.US, ListFormat.Type.STANDARD, ListFormat.Style.FULL)
    .format(List.of("Foo", "Bar", "Baz"))
これにより、次のように連結リスト文字列"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
ノート: これらの例はCLDRからのもので、他のロケール・プロバイダとは異なる結果になる可能性があります。

または、ロケール、タイプまたはスタイル(あるいはその両方)の独立インスタンスは、getInstance(String[])を使用して作成できます。 メソッドに対するString配列は、書式設定された文字列のstart/middle/end部分の区切りパターンと、2つまたは3つの要素に対するオプションの特殊パターンを指定します。 詳細は、メソッドの説明を参照してください。

解析時に、入力文字列の区切りシーケンスなど、入力文字列にあいまいさが見つかった場合、結果は同じフォーマットでフォーマットされても、入力文字列は再生成されません。 たとえば、2つの要素の文字列リスト"a、b、"、"c"は"a、bおよびc"としてフォーマットされますが、"a"、"b"、"c"という3つの要素として解析できます。

実装要件:
このクラスは不変でスレッドセーフです
導入されたバージョン:
22
外部仕様
関連項目:
  • メソッドの詳細

    • getAvailableLocales

      public static Locale[] getAvailableLocales()
      ListFormatをサポートする使用可能なロケールを返します。
      戻り値:
      ListFormatをサポートする使用可能なロケール
    • getInstance

      public static ListFormat getInstance()
      デフォルトのFORMAT LocaleSTANDARD型およびFULLスタイルのListFormatオブジェクトを返します。
      戻り値:
      デフォルトのFORMAT LocaleSTANDARD型およびFULLスタイルのListFormatオブジェクト
    • getInstance

      public static ListFormat getInstance(Locale locale, ListFormat.Type type, ListFormat.Style style)
      指定されたLocaleTypeおよびStyleのListFormatオブジェクトを返します。
      パラメータ:
      locale - 使用するLocale、null以外
      type - ListFormatのタイプ。 STANDARDORまたはUNITのいずれか(null以外)
      style - ListFormatのスタイル。 FULLSHORTまたはNARROWのいずれか(null以外)
      戻り値:
      指定されたLocaleTypeおよびStyleのListFormatオブジェクト
      例外:
      NullPointerException - 引数が1つでもnullの場合
    • getInstance

      public static ListFormat getInstance(String[] patterns)
      指定されたパターンのListFormatオブジェクトを返します。

      このファクトリは、ランタイムにLocaleTypeまたはStyleの適切なパターンを提供させるのではなく、カスタマイズされたパターン配列に基づいてインスタンスを返します。

      パターン配列には、Unicode LDMLのlistPatternPartに対応する5つの文字列パターン("start"、"真ん中"、"end"、2つの要素、および3つの要素パターン)が含まれている必要があります。 各パターンには、フォーマット時に渡された入力文字列で置換される"{0}"および"{1}" (3つの要素パターンの場合は"{2}")プレースホルダーが含まれます。 パターン配列の長さが5でない場合は、IllegalArgumentExceptionがスローされます。

      各パターン文字列は、最初に次のように解析されます。 カッコ内のリテラル("start_before"など)はオプションです。

       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)
       
      2つまたは3つのパターン文字列が空の場合は、それぞれ"(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

      public String format(List<String> input)
      入力文字列とこの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 - objListでも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を返します。
      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - 平等のために比較されるオブジェクト。
      戻り値:
      指定されたオブジェクトがこのListFormatと等しい場合はtrue
      関連項目:
    • toString

      public String toString()
      デバッグ用に、このListFormatを識別する文字列を返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      デバッグ用に、このListFormatを識別する文字列