Intl.NumberFormat.prototype.formatRangeToParts()

Baseline 2023
Newly available

Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die Methode formatRangeToParts() von Intl.NumberFormat Instanzen gibt ein Array von Objekten zurück, das die lokalespezifischen Tokens enthält, mit denen es möglich ist, benutzerdefinierte Zeichenketten zu erstellen, während die lokalespezifischen Teile erhalten bleiben. Dies ermöglicht die Bereitstellung von lokalisierte benutzerdefinierten Formatierungsbereichen von Zahlenzeichenketten.

Syntax

js
formatRangeToParts(startRange, endRange)

Parameter

startRange

Eine Number, BigInt, oder Zeichenkette, die formatiert werden soll. Zeichenketten werden auf die gleiche Weise geparst wie bei der Zahlenumwandlung, mit dem Unterschied, dass formatRangeToParts() den genauen Wert verwendet, den die Zeichenkette darstellt, um einen Präzisionsverlust bei der impliziten Umwandlung in eine Zahl zu vermeiden.

endRange

Eine Number, BigInt, oder Zeichenkette, die formatiert werden soll.

Rückgabewert

Ein Array von Objekten, die den formatierten Bereich in Teilen enthalten. Jedes Objekt hat drei Eigenschaften, type, value und source, die jeweils eine Zeichenkette enthalten. Die Zeichenkettenverkettung von value in der angegebenen Reihenfolge ergibt die gleiche Zeichenkette wie formatRange(). Der type kann die gleichen Werte wie formatToParts() haben. Die source kann einer der folgenden sein:

startRange

Das Token ist ein Teil der Anfangszahl.

endRange

Das Token ist ein Teil der Endzahl.

shared

Das Token wird zwischen Anfang und Ende geteilt, zum Beispiel das Währungssymbol. Alle Literale, die Teil des Bereichsmusters selbst sind, wie der "–"-Separator, werden ebenfalls als shared markiert.

Wenn die Start- und Endzahlen gleichwertig sind, dann hat die Ausgabe dieselbe Liste von Tokens wie bei einem Aufruf von formatToParts() auf die Anfangszahl, wobei alle Tokens als source: "shared" markiert sind.

Ausnahmen

RangeError

Ausgelöst, wenn entweder startRange oder endRange NaN oder eine unverwertbare Zeichenkette ist.

TypeError

Ausgelöst, wenn entweder startRange oder endRange undefiniert ist.

Beispiele

Verwendung von formatRangeToParts()

Die Methode formatRange() gibt lokalisierte, opake Zeichenketten aus, die nicht direkt manipuliert werden können:

js
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 €"

In vielen Benutzeroberflächen möchten Sie jedoch das Format dieser Zeichenkette anpassen oder sie mit anderen Texten durchsetzen. Die Methode formatRangeToParts() liefert dieselben Informationen in Teilen:

js
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" },
];

Spezifikationen

Specification
ECMAScript® 2026 Internationalization API Specification
# sec-intl.numberformat.prototype.formatrangetoparts

Browser-Kompatibilität

Siehe auch