如何正确清理用户输入的货币值?
我需要大十进制值,但用户的输入字段是标准文本输入。 我正在尝试格式化字符串,但是,我找不到一种方法来干净地处理用户通常插入的所有变体。
我试过这个:
parseFloat(amount.replace(',', '.')
这适用于以下情况:
1000 -> 1000
1000.1 -> 1000.1
1000,1 -> 1000.1
但是,我目前有以下两种情况不起作用:
1,000.1 -> gives: 1.1 / should be: 1000.1
1.000,1 -> gives 1.1 / should be: 1000.1
有没有一种方法可以格式化字符串,以便在用户输入一个或多个逗号或点作为小数分隔符时它也可以工作?
最佳答案
试试这个。
function parse(str){
if(str.includes('.') && str.includes(',')){
str = str.split(/[.,]/)
let last = str.lastIndexOf('.') || str.lastIndexOf(',');
return parseFloat(str.slice(0,last).join('').replace(/[.,]/g,'') + '.' + str.slice(last))
}
else return str.replace(',','.');
}
console.log(parse('1.000,1'))
console.log(parse('1,000.1'))
console.log(parse('1,0000'))
关于Javascript - 清理用户输入的货币值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786649/