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
