我有一个用户输入,用户可以在其中编辑某些内容的价格。为了保持数据的一致性,我想在前端站点上使用该字符串进行操作。
我想做的是:
1234 to 1234.00
12.3 to 12.30
12,3 to 12.30
1234.45 to 1234.45
基本上,
用点替换逗号 这应该很容易完成,例如:
str.replace(',', '.');
如果不是十进制数,则添加点数,并且总是更改两位数(如果需要,请添加0) 我尝试做类似的事情:
priceByUser = priceByUser.replace(/^\d*\.?\d*$/, "$1\.00");
不幸的是,这实际上并没有像我预期的那样工作。
是否有人可以帮助我解决这个问题? 感谢
答案 0 :(得分:4)
您可以考虑使用正则表达式将逗号和句点替换为只有小数点,然后通过parseFloat()
将值解析为浮点数,最后使用toFixed(2)
函数指示您需要两个小数位:
// This will clean up your input (consolidating periods and commas), parse the result
// as a floating point number and then format that number to two decimal places
priceByUser = parseFloat(priceByUser.replace(/,/g,'.')).toFixed(2);
如果你想要一个额外的验证级别,你可以考虑在发生这种情况后去掉任何非数字或小数位:
// Sanitize
priceByUser = priceByUser.replace(/,/g,'.').replace(/[^\d\.]/g,'');
// Parse and format
priceByUser = Number(priceByUser).toFixed(2);
示例强>
您可以see a working example here以及下面的输入/输出示例: