Intl.NumberFormat.prototype.formatRangeToParts()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2017 года.
Метод formatRangeToParts() экземпляров Intl.NumberFormat возвращает Array объектов, содержащих токены, специфичные для локали, из которых можно построить пользовательские строки, сохраняя при этом части, специфичные для локали. Это позволяет обеспечить пользовательское форматирование диапазонов числовых строк с учетом локали.
Синтаксис
formatRangeToParts(startRange, endRange)
Параметры
-
startRange Number,BigInt, или строка для форматирования. Строки анализируются так же, как при преобразовании чисел, за исключением того, чтоformatRangeToParts()будет использовать точное значение, которое представляет строка, избегая потери точности при неявном преобразовании в число.-
endRange Number,BigInt, или строка для форматирования.
Возвращаемое значение
Array объектов, содержащих отформатированный диапазон по частям. Каждый объект имеет три свойства: type, value и source, каждое из которых содержит строку. Конкатенация строк из value в заданном порядке даст ту же строку, что и formatRange(). type может иметь те же значения, что и formatToParts(), или дополнительное значение "approximatelySign" (см. ниже). source может быть одним из следующих:
-
startRange - Токен является частью начального числа.
-
endRange - Токен является частью конечного числа.
- Токен является общим для начала и конца; например, символ валюты. Все литералы, являющиеся частью самого шаблона диапазона, такие как разделитель
"–", также помечены какshared.
Если начальное и конечное числа форматируются в одну и ту же строку, то вывод содержит тот же список токенов, что и вызов formatToParts() для начального числа, при этом все токены помечены как source: "shared". Кроме того, первым токеном может быть символ «примерно равно» (например, «~») с type: "approximatelySign". Вставка этого символа зависит только от настроек локали и вставляется даже когда startRange === endRange.
Исключения
-
RangeError - Генерируется, если
startRangeилиendRangeявляетсяNaNили неконвертируемой строкой. -
TypeError - Генерируется, если
startRangeилиendRangeне определено (undefined).
Примеры
Использование formatRangeToParts()
Метод formatRange() выводит локализованные, непрозрачные строки, которыми нельзя манипулировать напрямую:
const startRange = 3500;
const endRange = 9500;
const formatter = new Intl.NumberFormat("de-DE", {
style: "currency",
currency: "EUR",
});
console.log(formatter.formatRange(startRange, endRange));
// "3.500,00–9.500,00 €"
Однако во многих пользовательских интерфейсах может потребоваться настроить форматирование этой строки или чередовать ее с другими текстами. Метод formatRangeToParts() предоставляет ту же информацию по частям:
console.log(formatter.formatRangeToParts(startRange, endRange));
// return value:
[
{ type: "integer", value: "3", source: "startRange" },
{ type: "group", value: ".", source: "startRange" },
{ type: "integer", value: "500", source: "startRange" },
{ type: "decimal", value: ",", source: "startRange" },
{ type: "fraction", value: "00", source: "startRange" },
{ type: "literal", value: "–", source: "shared" },
{ type: "integer", value: "9", source: "endRange" },
{ type: "group", value: ".", source: "endRange" },
{ type: "integer", value: "500", source: "endRange" },
{ type: "decimal", value: ",", source: "endRange" },
{ type: "fraction", value: "00", source: "endRange" },
{ type: "literal", value: " ", source: "shared" },
{ type: "currency", value: "€", source: "shared" },
];
Спецификации
| Спецификация |
|---|
| ECMAScript® 2027 Internationalization API Specification # sec-intl.numberformat.prototype.formatrangetoparts |
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
formatRangeToParts |
106 |
106 |
116 |
92 |
15.4 |
106 |
116 |
72 |
15.4 |
20.0 |
106 |
15.4 |
1.0.3 |
Нет |
19.0.0 |
Смотрите также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatRangeToParts