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

时间:2017-01-28 01:10:03

标签: javascript

我正在使用toLocaleString() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString转换为美元字符串格式,但我无法撤消操作。在我的情况下转换回美分。

dollarString.split('$')[1] * 100一旦字符串中包含,,就会显示出来。

有没有更好的方法来解决这个问题,而不是通过删除逗号的字符串?

如果我最终使用其他货币怎么办?我不能将货币兑换成美分代表,这样我就可以做数学,然后回到某个地方?

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

Ex:我决定在点和逗号分隔符之后使用n位数

Object.defineProperties(Number.prototype,{
    locale:{
        value:function(n){
           n = n||2
           return  this.toLocaleString('en', {
                         minimumFractionDigits: n, 
                         maximumFractionDigits: n
           });
        }
    }
});

/从字符串反向编号/

Object.defineProperties(String.prototype,{
    floatLocale:{
        value: function(){
            return parseFloat(this.replace(/,/g,""));
        }
    }
});

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