JavaScript/Objekte/Intl/NumberFormat/formatRangeToParts
Mit Hilfe der Intl.NumberFormat-Konstruktorfunktion erstellt man ein Formatierer-Objekt mit einem vorgegebenen Ausgabelayout.
Die Methode formatRangeToParts eines solchen Formatierers kann mit zwei Zahlen (Number oder BigInt) aufgerufen werden, um mit diesen Zahlen gemäß dem eingestellten Layout einen "von - bis" Bereich darzustellen. Das Ergebnis wird dabei nicht als eine Zeichenkette ausgegeben, sondern in Form eines Arrays, das die Teilelemente des Ergebnisses aufzählt.
const fmt3 = new Intl.NumberFormat("de-DE", { minimumFractionDigits: 3, maximumFractionDigits: 3 });
console.log(fmt3.formatRangeToParts(123.4, 767.2127)); // 123.400–767.213
// 0 : {type: 'integer', value: '123', source: 'startRange'}
// 1 : {type: 'decimal', value: '.', source: 'startRange'}
// 2 : {type: 'fraction', value: '400', source: 'startRange'}
// 3 : {type: 'literal', value: '-', source: 'shared'}
// 4 : {type: 'integer', value: '767', source: 'endRange'}
// 5 : {type: 'decimal', value: '.', source: 'endRange'}
// 6 : {type: 'fraction', value: '213', source: 'endRange'}
// length: 7
Jeder Eintrag im erzeugten Array enthält ein Objekt mit den Eigenschaften type
, value
und source
. Die type
Eigenschaft beschreibt, welcher Art dieser Teil des Ergebnisses ist. Das Beispiel zeigt integer für die Vorkommastellen, fraction für die Nachkommastellen, decimal für das Dezimaltrennzeichen und literal für das Verbindungszeichen. Aber wenn Sie sich überlegen, wie umfangreich die Optionen für Intl.NumberFormat sind, dann werden Sie sich nicht wundern, wenn es insgesamt viel mehr Typwerte gibt.
- integer
- Die Vorkommastellen. Vorsicht, wenn mit Zifferngruppierung formatiert wird, gibt es mehr als einen Eintrag mit Typ integer.
- fraction
- Die Nachkommastellen.
- decimal
- Das Dezimaltrennzeichen
- literal
- Das "bis"-Zeichen. Es können aber auch die Klammern um eine Zahl sein, wenn die
currencySign
-Option aufaccounting
steht. Falls eine Vorzeichenklammer und das "bis"-Zeichen direkt beisammen stehen, werden sie zu einem Literal zusammengefasst! - approximatelySign
- Wenn man
formatRange
mit zwei gleichen Werten aufruft, erhält man kein Intervall, sondern eine "Ungefähr" Angabe:fmt3->formatRange(123, 123)
ergibt "≈123,000". Das "ungefähr"-Zeichen ist natürlich Locale-spezifisch.formatRangeToParts
weist mit diesem Typ das ungefähr-Zeichen aus. - minusSign
- Das Vorzeichensymbol für negative Zahlen, sofern nötig und aktiviert
- plusSign
- Das Vorzeichensymbol für positive Zahlen, sofern nötig und aktiviert
- group
- Das Gruppentrennzeichen, wenn Zifferngruppierung verwendet wird. Achtung: Wenn gruppiert wird, erhalten Sie für jede Zifferngruppe einen integer Eintrag.
- exponentSeparator
- Das 'E' für Exponentialzahlen
- exponentInteger
- Der Exponent selbst
- exponentMinusSign
- Das Vorzeichen-Minus für den Exponenten
- compact
- "Mio." oder "Millionen" in der "compact"-Notation
- currency
- Eine Währungsangabe. Diese kann vor oder hinter der Zahl stehen, und laut ECMA 402 gibt es bis zu drei Währungsteile (currencyCode, currencyPrefix, currencySuffix), wobei nicht klar ist, ob davon mehr als ein Teil auftreten kann.
- percentSign
- Das Prozentzeichen, wenn die Formatierung als Prozentwert erfolgt
- unit
- Die Einheitenangabe für den Formatierungsstil "unit". Laut ECMA 402 gibt es bis zu zwei Teile (unitPrefix und unitSuffix).
- infinity, nan
- Falls Sie versehentlich die JavaScript-Werte Infinity oder NaN formatieren, erhalten Sie diesen Typ.
Das Verbindungszeichen zwischen den Zahlen ist im "de"- oder "en"-Locale ein Halbgeviertstrich (Gedankenstrich, Unicode-Zeichen – oder &ndash), kein einfaches Bindestrichminus. Das "zh"-Locale (chinesisch) verwendet hingegen das Bindestrichminus (-)
Die source
-Angabe besagt, aus welchem Teil des Methodenaufrufs der Wert stammt. Es gibt startRange
und endRange
für den von- und bis-Parameter, sowie shared
für Ausgabefragmente, die keinem der beiden zugeordnet werden können.