- すべての実装されたインタフェース:
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 enum
static 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 ListFormat
getInstance
(String[] patterns) 指定されたパターンのListFormatオブジェクトを返します。static ListFormat
getInstance
(Locale locale, ListFormat.Type type, ListFormat.Style style) このListFormatのLocale
を返します。String[]
このListFormatで使用されるパターンを返します。source
文字列から解析された文字列のリストを返します。parseObject
(String source, ParsePosition parsePos) 文字列からテキストを解析して文字列のリストを生成します。クラス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
を返します。
-