【问题标题】:Output numbers with comma after 3 digits输出 3 位后带逗号的数字
【发布时间】:2016-01-27 22:09:15
【问题描述】:

我用过这个 jQuery 代码

jQuery.fn.digits = function(){ 
    return this.each(function(){ 
        jQuery(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
    })
}

对于数字 150000 我希望它输出 150,000

但它正在输出:150,000.00

我不想要这些额外的 .00

【问题讨论】:

  • 那么你有什么办法解决这个问题?
  • 其实我不明白为什么要在这里寻求帮助的正则表达式。
  • 那么这应该适用于什么样的数字?只有 150000 或任何?
  • 您的代码中没有任何内容可以将.00 添加到您的号码中。您确定原件是150000 而不是150000.00

标签: javascript jquery


【解决方案1】:

我发现for 循环比正则表达式更容易理解。

function addCommas(num) {
    var characters = parseInt(num, 10).toString();
    var output = '';
    for (var offset = characters.length; offset > 0; offset -= 3) {
        output = characters.slice(Math.max(offset - 3, 0), offset) + (output ? ',' + output : '');
    }
    return output;
}

【讨论】:

  • @charlietfl 谢谢,已编辑为包含基数。另请注意,这会将输入数字四舍五入为整数,丢失小数点后的所有数字。如果需要,捕获这些内容并在最后附加它们是一个简单的练习。
  • 问题中的代码仅在输入中输出小数点后的数字。这似乎是 OP 所抱怨的。
【解决方案2】:

您可以使用 JQuery Number Formatter 插件,因此您不必处理此类正则表达式来格式化您的数字:

Jquery Number Formatter

另一种解决方法是用

修剪最后 3 个字符
$(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,").slice(0,-3)

【讨论】:

    【解决方案3】:

    在您的正则表达式之前尝试 Math.round,然后在之后尝试子字符串 - 这是未经测试的

    var newnumber = Math.round(parseInt($(this).text());
    var withcommas = newnumber.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
    $(this).text(withcommas.substring(0, s.indexOf('.')));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-18
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      相关资源
      最近更新 更多