我想在javascript中将货币格式化的字符串转换为浮点数.
例如:'$ 1,000.20'转换为浮动1000.20
'1,000.20美元'转换为浮动1000.20
我也有兴趣知道如何替换字母字符来说'*'
如何实施?
您可以使用正则表达式从任意字符串中选出数字:
var match= string.match(/[0-9,.]*/);
if (match!==null) {
var amount= parseFloat( match[0].replace(/,/g, '') ); // replace , thousands separator
}
Run Code Online (Sandbox Code Playgroud)
然而!由于浮点计算的不准确性,通常将浮动金额存储在浮点类型中是禁止的.当然,JavaScript 只能为您提供浮点数,但是通过坚持整数(例如分数),您可以得到精确的计算值,达到奇数千万亿.
处理金钱最重要的是使用十进制算术类型.这不是JavaScript中的内置类型,但这是它的实现.(不幸的是,它是相当重量级的......我正在考虑简单地实现仅仅需要基本算法的简单案例的基础知识.)
我也有兴趣知道如何替换字母字符来说'*'
再次正则表达式:
string.replace(/[A-Z]/gi, '*')
Run Code Online (Sandbox Code Playgroud)
(对于ASCII中的"字母字符"值.如果需要替换非ASCII Unicode字母,则必须构造一个涉及更多的字符类... JavaScript没有内置的元数据类整个Unicode字符集.)
很久以前,我做了一个正则表达式来处理各种货币......
([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$
Run Code Online (Sandbox Code Playgroud)
看看它的结果
那么你只需要得到小数部分,删除所有“。” 和“,”并与小数部分连接(如果存在)
最终结果变为:
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);
Run Code Online (Sandbox Code Playgroud)
代码笔:https://codepen.io/nicollaas94/pen/zdOevo?editors =0011
| 归档时间: |
|
| 查看次数: |
8180 次 |
| 最近记录: |