将字符串从money格式转换为在js中浮动

时间:2009-10-25 10:55:57

标签: javascript

我想在javascript中将货币格式化的字符串转换为浮点数。

例如: '$ 1,000.20'转换为浮动1000.20

'USD 1,000.20'转换为浮动1000.20

我也有兴趣知道如何替换字母字符来说'*'

如何实施?

6 个答案:

答案 0 :(得分:5)

您可以使用正则表达式从任意字符串中选出数字:

var match= string.match(/[0-9,.]*/);
if (match!==null) {
    var amount= parseFloat( match[0].replace(/,/g, '') ); // replace , thousands separator
}

然而!由于浮点计算的不准确性,通常将浮动金额存储在浮点类型中是禁止的。当然,JavaScript 为您提供浮点数,但通过坚持整数(例如,分数),您可以获得精确的计算,达到奇数千万亿。

最重要的是处理金钱是使用十进制算术类型。这不是JavaScript中的内置类型,但这里是它的an implementation。 (不幸的是,它是相当重量级的...我正在考虑简单地实现仅仅需要基本算术的简单案例的基础知识。)

  

我也有兴趣知道如何替换字母字符来说'*'

regex:

string.replace(/[A-Z]/gi, '*')

(对于ASCII中的“字母字符”的值。如果需要替换非ASCII Unicode字母,则必须构造一个更复杂的字符类... JavaScript没有内置的类整个Unicode字符集的元数据。)

答案 1 :(得分:4)

删除所有非数字符号:

脏string.replace(/ [^ \ d。] / g,'')

答案 2 :(得分:2)

这可行:

floatstring=currencystring.replace(/\$/,"");
floatstring=floatstring.replace(/USD/,"");  
floatstring=floatstring.replace(/,/,"");  
floatstring=floatstring*1;

答案 3 :(得分:2)

很久以前我制作了一个正则表达式来处理各种货币......

([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$

查看结果

enter image description here

然后你只需要获得分数部分,删除所有“。”和“,”并与小数部分连接(如果存在)

最终结果成为:

let currency = "R$ -123.324,123,323"
let regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$/igm
let result = regex.exec(currency);
console.log("Regex result: " + result);
let floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : currency.replace(/[^0-9-+]/g, "");
console.log("Final result: " + floatResult);

Codepen:https://codepen.io/nicollaas94/pen/zdOevo?editors=0011

答案 4 :(得分:1)

使用JavaScript substring()方法去除字母,然后使用parseFloat

进行解析
parseFloat('1,000.20')

parseFloat('1,000.20')

答案 5 :(得分:0)

这将删除所有字符

      var value = string.replace(',', '');
      value = value.replace(/[^0-9,.]*/, '');
      value = parseFloat(value);