11521 sujets
JavaScript, DOM et API Web HTML5
Bonjour Dinolam,
En brut ton prix s'affiche sous quelle forme ?
A ce que j'en sais, JS ne gère pas le format monétaire nativement. Si tu n'as qu'une devise à gérer, pourquoi ne pas faire un remplacement de caractère via str.replace()?
Modifié par Greg_Lumiere (07 Mar 2017 - 18:53)
En brut ton prix s'affiche sous quelle forme ?
A ce que j'en sais, JS ne gère pas le format monétaire nativement. Si tu n'as qu'une devise à gérer, pourquoi ne pas faire un remplacement de caractère via str.replace()?
var price = '25,30';
price = price.replace(',', '€');
/** Price devient 25€30 **/
Modifié par Greg_Lumiere (07 Mar 2017 - 18:53)
Bonsoir,
Si c'est simplement pour rechercher un prix dans un texte en HTML pour le formater, je propose :
Si c'est à partir d'un nombre (ni trop grand ni trop petit) à mettre en euros :
Je pense que c'est loin d'être optimal, car je ne suis pas très à l'aise avec les expressions régulières.
Par contre, il me semble qu'il serait plus rigoureux d'écrire (en France) quelque chose comme 35,95 €. (notez l'espace insécable)
Modifié par TrisTOON (07 Mar 2017 - 19:57)
Si c'est simplement pour rechercher un prix dans un texte en HTML pour le formater, je propose :
const format = /(\d+[€$£])(\d*)?/g;
const texte = "J'ai acheté un objet à 35$95 et de l'essence pour 60€354.";
const texteFormate = texte.replace (format, (prix, $1, $2) => $1 + "<sup>" + ($2 === undefined ? "00" : $2 + ($2 < 10 ? "0" : "")) + "</sup>");
Si c'est à partir d'un nombre (ni trop grand ni trop petit) à mettre en euros :
const format = /(\d+)(?:\.(\d*))?/;
const nombre = 35.95;
const nombreFormate = nombre.toString ().replace (format, (prix, $1, $2) => $1 + "€<sup>" + ($2 === undefined ? "00" : $2 + ($2 < 10 ? "0" : "")) + "</sup>");
Je pense que c'est loin d'être optimal, car je ne suis pas très à l'aise avec les expressions régulières.
Par contre, il me semble qu'il serait plus rigoureux d'écrire (en France) quelque chose comme 35,95 €. (notez l'espace insécable)
Modifié par TrisTOON (07 Mar 2017 - 19:57)
J'ai un petit souci concernant ton code @TrisTOON.
J'ai choisi la deuxième option : "Si c'est à partir d'un nombre (ni trop grand ni trop petit) à mettre en euros", car je récupère mon prix dans la base de données (dynamiquement).
Mon prix est par exemple : 13,9€.
Avec ton code ça m'affiche : 13€00,9
J'ai besoin d'un truc de ce genre : 13€^90
Je vous remercie.
J'ai choisi la deuxième option : "Si c'est à partir d'un nombre (ni trop grand ni trop petit) à mettre en euros", car je récupère mon prix dans la base de données (dynamiquement).
Mon prix est par exemple : 13,9€.
Avec ton code ça m'affiche : 13€00,9
J'ai besoin d'un truc de ce genre : 13€^90
Je vous remercie.
Je précise le domaine d'application de ma seconde solution : elle portait sur un nombre, c'est-à-dire une variable de type Number (ex: 4.1), et non une chaîne (de type String) représentant un nombre (ex: "4.1").
Si j'ai bien compris, votre prix est-il bien sous la forme "<entier>,<entier>€" ?
Dans ce cas, je propose :
J'en ai profité pour corriger une erreur, mais ça reste du bricolage...
Si j'ai bien compris, votre prix est-il bien sous la forme "<entier>,<entier>€" ?
Dans ce cas, je propose :
const format = /(\d+)(?:,(\d*))?[€$£]/;
const valeur = "13,9€";
const valeurFormatee = valeur.replace (format, (prix, $1, $2) => $1 + "€<sup>" + ($2 === "" ? "00" : $2 + ($2 < 10 && $2.length == 1 ? "0" : "")) + "</sup>");
J'en ai profité pour corriger une erreur, mais ça reste du bricolage...