Javascript 在js中将字符串从货币格式转换为浮动格式
我想在javascript中将货币格式的字符串转换为浮点 例: “1000.20美元”转换为浮动1000.20美元 “1000.20美元”转换为浮动1000.20美元 我还想知道如何将字母字符替换为“*” 如何实现这一点?使用JavaScript方法去除字母,然后使用parseFloat进行解析Javascript 在js中将字符串从货币格式转换为浮动格式,javascript,Javascript,我想在javascript中将货币格式的字符串转换为浮点 例: “1000.20美元”转换为浮动1000.20美元 “1000.20美元”转换为浮动1000.20美元 我还想知道如何将字母字符替换为“*” 如何实现这一点?使用JavaScript方法去除字母,然后使用parseFloat进行解析 parseFloat('1,000.20') parseFloat('1,000.20') 这可能会起作用: floatstring=currencystring.replace(/\$/,"");
parseFloat('1,000.20')
parseFloat('1,000.20')
这可能会起作用:
floatstring=currencystring.replace(/\$/,"");
floatstring=floatstring.replace(/USD/,"");
floatstring=floatstring.replace(/,/,"");
floatstring=floatstring*1;
删除所有非数字符号: 脏字符串。替换(/[^\d.]/g',)
您可以使用正则表达式从任意字符串中选择数字:
var match= string.match(/[0-9,.]*/);
if (match!==null) {
var amount= parseFloat( match[0].replace(/,/g, '') ); // replace , thousands separator
}
然而!由于浮点计算的不精确性,以浮点类型存储货币金额通常是不允许的。当然,JavaScript只提供浮点数,但通过坚持使用整数(如美分),您可以获得高达奇数万亿次的精确计算
处理货币的最好方法是使用十进制算术类型。这不是JavaScript中的内置类型,但下面是它的一部分。(不幸的是,它相当重……我正在考虑为那些只需要基本算术运算的琐碎情况构建一个简单的基础实现。)
我还想知道如何将字母字符替换为“*”
regex再次:
string.replace(/[A-Z]/gi, '*')
(对于ASCII中的“字母字符”值。如果需要替换非ASCII Unicode字母,则必须构造更复杂的字符类…JavaScript没有用于整个Unicode字符集元数据的内置类。)这将删除所有字符
var value = string.replace(',', '');
value = value.replace(/[^0-9,.]*/, '');
value = parseFloat(value);
很久以前我做了一个正则表达式来处理各种货币
([+-]?[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:谢谢你的回答。我发现我想要一个稍微不同的正则表达式:string.match(/[0-9,.]+/g)似乎不能100%正确地工作。如果在Chrome中有一个do
parseFloat('1000.20')
,我得到的结果是1