Класс ListFormat
- Все реализуемые интерфейсы:
-
Serializable,Cloneable
public final class ListFormat extends Format
ListFormat форматирует или разбирает список строк в зависимости от локали. Используйте ListFormat для построения списка строк, отображаемых для конечных пользователей. Например, отобразить список из 3 дней недели, например, "Понедельник", "Среда", "Пятница" как "Понедельник, среда и пятница" в формате включительно. Этот класс предоставляет функциональность, определённую в спецификации LDML Консорциума Юникода для шаблонов списков. Предоставляются три типа форматирования: STANDARD, OR и UNIT, которые определяют пунктуацию между строками и соединительные слова, если они есть. Также для каждого типа предоставляются три стиля форматирования: FULL, SHORT и NARROW, подходящие для сокращения (или отсутствия сокращения) строк. Следующий фрагмент кода демонстрирует форматирование списка строк "Foo", "Bar", "Baz" на английском языке США с типом STANDARD и стилем FULL:
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 |
В качестве альтернативы, независимые экземпляры Locale, Type и/или Style могут быть созданы с помощью getInstance(String[]). Массив строк в методе определяет разделительные шаблоны для начальной/средней/конечной части отформатированной строки, а также необязательные специализированные шаблоны для двух или трёх элементов. Подробнее см. описание метода.
При разборе, если в входной строке обнаружена некоторая неоднозначность, например, последовательности разделителей в входной строке, результат, когда он форматируется с тем же форматированием, не воспроизводит входную строку. Например, список строк из двух элементов "a, b,", "c" будет отформатирован как "a, b и c", но может быть проанализирован как три элемента "a", "b", "c".
- Требования к реализации:
- Этот класс неизменяемый и потокобезопасный
- С:
- 22
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static enum |
ListFormat.Style |
|
static enum |
ListFormat.Type |
Вложенные классы/интерфейсы, объявленные в классе java.text.Format
Format.Field
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный объект с этим ListFormat на равенство. |
StringBuffer |
format |
Форматирует объект и добавляет полученный текст в заданный буфер строк. |
String |
format |
Возвращает строку, состоящую из входных строк, конкатенированных с шаблонами этого ListFormat. |
static Locale[] |
getAvailableLocales() |
Возвращает доступные локали, которые поддерживают ListFormat. |
static ListFormat |
getInstance() |
|
static ListFormat |
getInstance |
Возвращает объект ListFormat для указанных шаблонов. |
static ListFormat |
getInstance |
|
Locale |
getLocale() |
Возвращает Locale этого ListFormat. |
String[] |
getPatterns() |
Возвращает шаблоны, используемые в этом ListFormat. |
List |
parse |
Возвращает проанализированный список строк из строки source. |
Object |
parseObject |
Разбирает текст из строки, чтобы получить список строк. |
String |
toString() |
Возвращает строку, идентифицирующую этот ListFormat, для отладки. |
Методы, объявленные в классе java.text.Format
clone, format, formatToCharacterIterator, parseObject
Подробное описание методов
getAvailableLocales
public static Locale[] getAvailableLocales()
- Возвращает:
- доступные локали, поддерживающие ListFormat
getInstance
public static ListFormat getInstance()
- Возвращает:
- объект ListFormat для по умолчанию
FORMAT Locale, типаSTANDARDи стиляFULL
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 - Возвращает:
- объект ListFormat для указанной
Locale,TypeиStyle - Исключения:
-
NullPointerException- если любой из аргументов равен null
getInstance
public static ListFormat getInstance(String[] patterns)
Этот фабричный метод возвращает экземпляр, основанный на настраиваемом массиве шаблонов, вместо того, чтобы позволить времени выполнения предоставить соответствующие шаблоны для Locale, Type или Style.
Массив шаблонов должен содержать пять строковых шаблонов, каждый из которых соответствует шаблону LDML Unicode, т.е., «начало», «середина», «конец», шаблоны для двух элементов и трех элементов в этом порядке. Каждый шаблон содержит заглушки "{0}" и "{1}" (и "{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)
Если вторая или третья строки шаблонов пустые, они возвращаются к "(start_before){0}end_between{1}(end_after)", "(start_before){0}start_between{1}end_between{2}(end_after)", соответственно. Если разбор любой строки шаблона для начала, середины, конца, двух или трех элементов завершается неудачно, генерируется 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 стилю на английском языке США: | Вид шаблона | Строка шаблона |
|---|---|
| начало | "{0}, {1}" |
| середина | "{0}, {1}" |
| конец | "{0}, и {1}" |
| два | "{0} и {1}" |
| три | "" |
| Список входных строк | Отформатированная строка |
|---|---|
| "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()
Locale этого ListFormat. locale определяется getInstance(Locale, Type, Style) или getInstance(String[]).- Возвращает:
Localeэтого ListFormat
getPatterns
public String[] getPatterns()
patterns определяются getInstance(Locale, Type, Style) или getInstance(String[]).- Возвращает:
- шаблоны, используемые в этом ListFormat
format
public String format(List<String> input)
ListFormat.- Примечание API:
- Форматирование строки из чрезмерно длинного списка может превысить лимит памяти или размера строки.
- Параметры:
-
input- список входных строк для форматирования. В этом списке должно быть как минимум одна строка, в противном случае генерируетсяIllegalArgumentException. - Возвращает:
- строку, состоящую из входных строк, соединенных шаблонами этого
ListFormat - Исключения:
-
IllegalArgumentException- если длинаinputравна нулю. -
NullPointerException- еслиinputравен null.
format
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
- Задано в:
-
formatв классеFormat - Примечание API:
- Форматирование строки из чрезмерно длинного списка или массива может превысить лимит памяти или размера строки.
- Параметры:
-
obj- объект для форматирования. Должен быть списком или массивом объектов. -
toAppendTo- место, куда должен быть добавлен текст -
pos- Игнорируется. Не используется в ListFormat. Может быть null - Возвращает:
- переданный буфер строк, с добавленным отформатированным текстом
- Исключения:
-
NullPointerException- еслиobjилиtoAppendToравны null -
IllegalArgumentException- еслиobjне является спискомListили массивом объектовObjectили его длина равна нулю.
parse
public List<String> parse(String source) throws ParseException
source строки. Обратите внимание, что format(List) и этот метод могут не гарантировать обратную трансформацию, если входные строки содержат неоднозначные разделители. Например, список строк из двух элементов "a, b,", "c" будет отформатирован как "a, b, and c", но может быть разобран как список из трех элементов "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) для получения дополнительной информации о разборе списков.
- Specified by:
-
parseObjectв классеFormat - Parameters:
-
source- Строка, часть которой должна быть обработана. -
parsePos- ОбъектParsePositionс информацией об индексе и индексе ошибки, как описано выше. - Returns:
- Список строк, разобранных из
source. В случае ошибки возвращает null. - Throws:
-
NullPointerException- еслиsourceилиparsePosравны null. -
IndexOutOfBoundsException- если начальный индекс, заданныйparsePos, находится внеsource.
equals
public boolean equals(Object obj)
ListFormat на равенство. Возвращает true, если указанный объект также является объектом ListFormat, и locale и patterns, возвращённые из getLocale() и getPatterns() соответственно, равны.toString
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/text/ListFormat.html