为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用逗号千位分隔符将字符串解析为数字?

如何使用逗号千位分隔符将字符串解析为数字?

子衿沉夜 2019-07-24 19:45:18
如何使用逗号千位分隔符将字符串解析为数字?我有2,299.00一个字符串,我试图解析它的数字。我尝试使用parseFloat,结果是2.我猜这个逗号是问题,但我怎么能以正确的方式解决这个问题呢?只需删除逗号?var x = parseFloat("2,299.00")alert(x);
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

是删除逗号:

parseFloat(yournumber.replace(/,/g, ''));


查看完整回答
反对 回复 2019-07-24
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

在现代浏览器中,您可以使用内置的Intl.NumberFormat来检测浏览器的数字格式并规范化输入以匹配。

function parseNumber(value, locale = navigator.language) {
  const example = Intl.NumberFormat(locale).format('1.1');
  const cleanPattern = new RegExp(`[^-+0-9${ example.charAt( 1 ) }]`, 'g');
  const cleaned = value.replace(cleanPattern, '');
  const normalized = cleaned.replace(example.charAt(1), '.');

  return parseFloat(normalized);}const corpus = {
  '1.123': {
    expected: 1.123,
    locale: 'en-US'
  },
  '1,123': {
    expected: 1123,
    locale: 'en-US'
  },
  '2.123': {
    expected: 2123,
    locale: 'fr-FR'
  },
  '2,123': {
    expected: 2.123,
    locale: 'fr-FR'
  },}for (const candidate in corpus) {
  const {
    locale,
    expected  } = corpus[candidate];
  const parsed = parseNumber(candidate, locale);

  console.log(`${ candidate } in ${ corpus[ candidate ].locale } == ${ expected }? ${ parsed === expected }`);}

它们显然有一些优化和缓存的空间,但这在所有语言中都可靠地运行。


查看完整回答
反对 回复 2019-07-24
  • 3 回答
  • 0 关注
  • 475 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信