javascript - Hvordan konvertere en lokal streng (valuta) tilbake til et tall?
Jeg bruker toLocaleString() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString for å konvertere til et dollarstrengformat, men jeg har problemer med å reversere operasjonen. I mitt tilfelle å konvertere tilbake til cent.
dollarString.split('$')[1] * 100 blir rotete så snart strengen har et , i seg.
Finnes det en bedre måte å håndtere dette på, enn å gå gjennom strenger og fjerne kommaer?
Hva om jeg ender opp med å bruke andre valutaer. Kan jeg ikke konvertere inn og ut av hvilken som helst valuta til en cent-representasjon slik at jeg kan gjøre matte, og så tilbake til noen lokal valuta?
Svar #1
Forutsatt at du er i et område som bruker punktum som desimaltegn, kan du bruke noe som dette:
var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, ''));
Ovenfor bruker en regulær uttrykk for å fjerne alt unntatt sifre og desimaltegnet. parsefloat-funksjonen vil gjøre resten.
Bare vær forsiktig. Noen land bruker ikke komma og desimal på samme måte som du gjør! Det er sannsynligvis best å holde pengebeløpet i en float-variabel, og bare formatere det når du faktisk skriver det ut.
Svar #2
Som foreslått av andre, må du fjerne (,) fra strengen.
dollarString.split('$')[1].replace(/\,/g,'') * 100
I tilfelle dollarString kun har verdier som $xx,xxx,xxx$xx,xxx,xxx, kan du rett og slett fjerne alle (,) og deretter splitte
dollarString.replace(/\,/g,'').split('$')[1] * 100
