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