我想在javascript中将货币格式化的字符串转换为浮点数。
例如: '$ 1,000.20'转换为浮动1000.20
'USD 1,000.20'转换为浮动1000.20
我也有兴趣知道如何替换字母字符来说'*'
如何实施?
答案 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]+)$
查看结果
然后你只需要获得分数部分,删除所有“。”和“,”并与小数部分连接(如果存在)
最终结果成为:
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);