Spec-Zone.ru › JavaScript

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
Токен является общим для начала и конца; например, символ валюты. Все литералы, являющиеся частью самого шаблона диапазона, такие как разделитель "–", также помечены как 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

Смотрите также

  • Intl.NumberFormat
  • Intl.NumberFormat.prototype.format()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API