javascript - Javascript - 干净的用户输入的货币价值
问题描述
如何正确清理用户输入的货币值?
我需要该值作为 Big Decimal,但用户的输入字段是标准文本输入。我正在尝试格式化字符串,但是,对于用户通常插入的所有变体,我找不到一种干净利落的方法。
我试过这个:
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
有没有办法格式化字符串,如果用户输入一个或多个逗号或点作为十进制分隔符,它也可以工作?
解决方案
据我所知,代码需要区分小数分隔符和千位分隔符。只能有一个小数分隔符,通常是最后一个“.”。或输入中的“,”。您只能将字符串中的最后一个 ',' 替换为 '.' 并删除所有其余的“,”和“。” 从输入。这适用于您提供的测试用例,但如果用户输入类似 100,001 的内容,并且“,”用作千位分隔符,代码仍然会失败。我认为最好的方法是使用某种类型的输入掩码或表示正确输入值类型的帮助段落。
推荐阅读
- reactjs - React 测试库:匹配按钮数量
- swift - 根据条件打开第一个视图
- google-cloud-platform - 谷歌云平台哪个地方消费kafka话题最好?
- php - PHP中模板字符串中关联数组的所有组合?
- node.js - CKEditor5 Online Editor - 如何为strapi配置自定义npm包
- javascript - 有没有`从
进口 ` ES6 中的语法? - css - MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型,
- android - Android Studio 代码不适用于 Android 版本 P 9.0
- angular - 子延迟加载模块中解析器服务上的 Angular 9 NullInjectorError
- azure - Azure AD B2C 中自定义策略中的 Rest API 调用