【问题标题】:In JavaScript / jQuery what is the best way to convert a number with a comma into an integer? [duplicate]在 JavaScript / jQuery 中,将带逗号的数字转换为整数的最佳方法是什么?
【发布时间】:2011-05-04 06:13:25
【问题描述】:

我想将字符串“15,678”转换为值 15678。方法 parseInt()parseFloat() 都为“15,678”返回 15。有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: javascript jquery string-parsing


    【解决方案1】:

    一种方法是删除所有逗号:

    strnum = strnum.replace(/\,/g, '');
    

    然后 将其传递给 parseInt:

    var num = parseInt(strnum.replace(/\,/g, ''), 10);
    

    但你需要在这里小心。使用逗号作为千位分隔符是一种文化现象。在某些地区,数字1,234,567.89 会写成1.234.567,89

    【讨论】:

    • parseInt() 在被调用时应提供一个基数,以消除数字的十六进制解释。
    【解决方案2】:

    如果你只有数字和逗号:

    +str.replace(',', '')
    

    + 尽可能将字符串str 转换为数字。为了使这一点尽可能清楚,请用括号括起来:

    (+str.replace(',', ''))
    

    因此,如果你在语句中使用它,它在视觉上更加独立(+ +x 看起来非常类似于 ++x):

    var num = (+str1.replace(',', '')) + (+str1.replace(',', ''));
    

    Javascript 代码约定(参见“令人困惑的优缺点”,倒数第二部分):

    http://javascript.crockford.com/code.html

    【讨论】:

    • 您的解决方案将仅替换第一个逗号,而不是全部替换,因此它不适用于 >= 1,000,000 的数字
    【解决方案3】:

    在解析前使用正则表达式删除逗号,像这样

    parseInt(str.replace(/,/g,''), 10)
    //or for decimals as well:
    parseFloat(str.replace(/,/g,''))
    

    You can test it here.

    【讨论】:

      【解决方案4】:

      你可以这样做:

      var value = parseInt("15,678".replace(",", ""));
      

      【讨论】:

      • 您的解决方案将仅替换第一个逗号,而不是全部替换,因此它不适用于 >= 1,000,000 的数字
      • @daniel.sedlacek 问题是“我想将字符串“15,678”转换为值 15678”。我的回答解决了这个问题。当然,我在这里很迂腐,但在技术上是正确的;)
      【解决方案5】:

      最简单的选择是删除所有逗号:parseInt(str.replace(/,/g, ''), 10)

      【讨论】:

        猜你喜欢
        • 2010-09-12
        • 2017-09-09
        • 2011-08-11
        • 1970-01-01
        • 2011-11-19
        • 1970-01-01
        • 2011-01-03
        相关资源
        最近更新 更多