Intl.NumberFormat : méthode formatRangeToParts()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis août 2023.
La méthode formatRangeToParts() des instances de Intl.NumberFormat retourne un tableau (Array) d'objets contenant les jetons spécifiques à la locale à partir desquels il est possible de construire des chaînes de caractères personnalisées tout en préservant les parties spécifiques à la locale. Cela permet de fournir des intervalles de formatage personnalisés sensibles à la locale pour les chaînes de caractères représentant des nombres.
Syntaxe
formatRangeToParts(startRange, endRange)
Paramètres
startRange-
Un nombre (
Number), un grand entier (BigInt), ou une chaîne de caractères, à formater. Les chaînes de caractères sont analysées de la même manière que dans la conversion de nombres, sauf queformatRangeToParts()utilisera la valeur exacte que représente la chaîne de caractères, évitant ainsi toute perte de précision lors de la conversion implicite en nombre. endRange-
Un nombre (
Number), un grand entier (BigInt), ou une chaîne de caractères, à formater.
Valeur de retour
Un tableau (Array) d'objets contenant l'intervalle formaté en parties. Chaque objet possède trois propriétés, type, value et source, chacune contenant une chaîne de caractères. La concaténation des valeurs de value, dans l'ordre fourni, donnera la même chaîne de caractères que formatRange(). La propriété type peut avoir les mêmes valeurs que formatToParts(), ou la valeur supplémentaire "approximatelySign" (voir ci-dessous). La propriété source peut être l'une des suivantes :
startRange-
Le jeton fait partie du nombre de début.
endRange-
Le jeton fait partie du nombre de fin.
-
Le jeton est partagé entre le début et la fin ; par exemple, le symbole de la devise. Tous les littéraux qui font partie du modèle d'intervalle lui-même, comme le séparateur
"—", sont également marqués commeshared.
Si les nombres de début et de fin sont formatés de la même manière, alors la sortie contient la même liste de jetons que l'appel de formatToParts() sur le nombre de début, avec tous les jetons marqués comme source: "shared". De plus, le premier jeton peut être un symbole « environ égal » (par exemple, "~") avec type: "approximatelySign". L'insertion de ce symbole dépend uniquement des paramètres de la locale et est insérée même lorsque startRange === endRange.
Exceptions
RangeError-
Levée si
startRangeouendRangeestNaNou une chaîne de caractères non convertible. TypeError-
Levée si
startRangeouendRangen'est pas défini.
Exemples
>Utiliser la méthode formatRangeToParts()
La méthode formatRange() retourne des chaînes de caractères localisées opaques qui ne peuvent pas être manipulées directement :
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 €"
Cependant, dans de nombreuses interfaces utilisateur, vous pouvez vouloir personnaliser le formatage de cette chaîne, ou l'intercaler avec d'autres textes. La méthode formatRangeToParts() produit les mêmes informations en parties :
console.log(formatter.formatRangeToParts(startRange, endRange));
// Valeur de retour :
[
{ 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" },
];
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Internationalization API Specification> # sec-intl.numberformat.prototype.formatrangetoparts> |
Compatibilité des navigateurs
Voir aussi
- L'objet
Intl.NumberFormat - La méthode
Intl.NumberFormat.prototype.format()