2010-05-03 4 views
3

Dire que j'ai une chaîne: 33400298,57mise en forme efficace USD en Javascript

J'ai écrit une fonction (trop long, trop lourd, trop inférieure pour poster ici) qui formate en:

33,400,298.57

La logique de la viande est l'insertion de virgules - à gauche de la décimale, toutes les trois places. Peut-il y avoir une solution d'une ligne utilisant regex pour accomplir ceci? Actuellement, je suis en train de diviser, d'inverser, de boucler pour insérer, inverser et rejoindre à nouveau. Inutile de dire que ce n'est pas optimal.

Je cherche quelque chose comme ceci:

générateur de couleur aléatoire: '#' + Math.floor (Math.random() * 16777215) .toString (16);

Merci.

+0

vérifier ce lien: http://software.dzhuvinov.com/jsworld.html – meo

+0

Merci, mais ne veux vraiment pas regarder une bibliothèque pour trouver une ligne. C'est trop payé. – JSTyro

+0

Copie possible de [Comment est-ce que je peux mettre en forme des nombres comme devise de dollars en JavaScript?] (Https://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-dollars-currency-string-in -javascript) – avs099

Répondre

0

Puisque j'utilise jQuery en plus de JavaScript, j'utiliserais un plugin jQuery. Quelque chose comme ceci:

http://code.google.com/p/jquery-formatcurrency/

Si vous utilisez une bibliothèque JavaScript différente, je chercherais un plug-in pour cette bibliothèque à la place. J'éviterais d'écrire votre propre méthode de formatage. Ne réinventez pas la roue.

+0

Vous n'avez pas besoin d'écrire une méthode complète pour un doublage. – icio

0

Eh bien, il est numéro toLocaleString:

Number(12345.67).toLocaleString(); 

Il est cependant lieu spécifique, emptor donc mise en garde.

2

Que diriez-vous ce sexy petit nombre avec regex:

s = "33400298.57"; 
s.replace(/(?!^)(\d\d\d)(?=(\d\d\d)*\.)/g, ',$1'); // 33,400,298.57 
+0

C'est une regex, mais c'est aussi sexy. – wombleton