Ricerca nel sito web

javascript - Come convertire una stringa locale (valuta) di nuovo in un numero?


Sto usando toLocaleString() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString per convertire in un formato di stringa in dollari, ma sto avendo difficoltà a invertire l'operazione. Nel mio caso, convertire di nuovo in centesimi.

dollarString.split('$')[1] * 100 va in tilt non appena la stringa contiene una ,.

C'è un modo migliore per gestire questo, piuttosto che passare attraverso le stringhe rimuovendo le virgole?

E se finissi per usare altre valute? Non posso convertire dentro e fuori qualsiasi sia la valuta in una rappresentazione in centesimi così posso fare i calcoli, e poi riconvertire in una qualche valuta locale?

Risposta n. 1

Assumendo che tu sia in una zona che utilizza il punto come separatore decimale, potresti usare qualcosa del genere:

var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, '')); 

Quanto sopra utilizza un'espressione regolare per rimuovere tutto tranne le cifre e il decimale. La funzione parsefloat farà il resto.

Stai solo attento. Alcuni paesi non usano la virgola e il punto decimale come fai tu! Probabilmente è meglio mantenere l'importo monetario in una variabile float e formattarlo solo quando lo si stampa effettivamente.

Risposta n. 2

Come suggerito da altri, è necessario rimuovere (,) dalla stringa.

dollarString.split('$')[1].replace(/\,/g,'') * 100

Nel caso in cui dollarString abbia solo valori come $xx,xxx,xxx$xx,xxx,xxx, allora puoi semplicemente rimuovere tutte le (,) e poi dividere

dollarString.replace(/\,/g,'').split('$')[1] * 100