关于javascript:如何将区域设置字符串(货币)转换回数字?

How to convert a locale string (currency) back into a number?

我正在使用toLocaleString()https://developer.mozilla.org/en-us/docs/web/javascript/reference/global ou objects/number/tolocalString将其转换为美元字符串格式,但我无法恢复操作。在我的例子中,转换成美分。

当字符串中有一个EDOCX1[2]时,EDOCX1[1]就会混乱起来。

有没有比通过字符串删除逗号更好的方法来处理这个问题?

如果我最终使用其他货币怎么办?我不能把货币的进出转换成一个美分的表示,这样我就可以做数学,然后回到某个地方吗?


假设您所处的区域设置使用句点作为小数点,则可以使用如下内容:

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

上面使用正则表达式删除除数字和小数之外的所有内容。parsefloat功能将完成其余功能。

小心点。有些国家不像你那样使用逗号和小数!最好是将货币金额保持在浮动变量中,并且只在实际打印时格式化它。


例:我决定在点和逗号分隔符后使用N位数字。

1
2
3
4
5
6
7
8
9
10
11
Object.defineProperties(Number.prototype,{
    locale:{
        value:function(n){
           n = n||2
           return  this.toLocaleString('en', {
                         minimumFractionDigits: n,
                         maximumFractionDigits: n
           });
        }
    }
});

/从字符串反转为数字/

1
2
3
4
5
6
7
Object.defineProperties(String.prototype,{
    floatLocale:{
        value: function(){
            return parseFloat(this.replace(/,/g,""));
        }
    }
});

所以v= 1000.33; v === v.locale().floatLocale();


正如其他人建议的那样,您需要从字符串中删除(,)。

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

如果dollarString的值只有$xx,xxx,xxx$xx,xxx,xxx的值,那么您可以简单地删除所有(,的值,然后拆分

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