`

(转)js输出数字用千分号分隔的三种方法

 
阅读更多

第一种方法:将数字转换成字符串进行处理

参数 描述
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
function formatNumber(num) {
  var decimalPart = '';
  num = num.toString();
  if (num.indexOf('.') != -1) {
    decimalPart = '.' + num.split('.')[1];
    num = parseInt(num.split('.')[0]);
  }
  var array = num.toString().split('');
  var index = -3;
  while (array.length + index > 0) {
    // 从单词的最后每隔三个数字添加逗号
    array.splice(index, 0, ',');
    index -= 4;
  }
  return array.join('') + decimalPart;
};


第二种方法:用正则表达式进行匹配

/** 
 * 正则表达式的含义:
 *  \b 表示单词间隔 如 i am here \bhere\b, 如果是 iamhere 则用 \bhere\b不能匹配here,只能用here匹配
 *  \B 和 \b相反,类似\d \D的关系。 \B表示非单词间隔上面的例子 iamhere如果用\Bhere 则可以匹配
 *  (?=(\d{3})+(?!\d)) 意思连续三位为数字,且满足最后一位不是数字,也就是单词结尾了,所以能做到单词往前推三位加上逗号
 */
function formatNumberRgx(num) {
  var parts = num.toString().split(".");
  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  return parts.join(".");
};

 

 

正则表达式解析:

/\B(?=(\d{3})+(?!\d))/g

 

先把上面这个表达式的结构解析为如下形式:/x(?=y)/g 。其中 g 代表全局匹配,x(?=y) 匹配x当且仅当x 后面是 y ,代表 \B ,y 代表  (\d{3})+(?!\d)\B 匹配非单词边界,两边都是单词字符或者两边都是非单词字符,形如:\w\B\w 或者 \W\B\W (\d{3})+(?!\d) 又可以解为: x(?!y),匹配x 当且仅当 后面不是 y 。其中 x 代表  (\d{3})+y代表 \d。(\d{3})+ 匹配三个数字,出现次数>=1。

 


第三种方法:使用原生函数。

 

number.toLocaleString();


注意:

 

第三种方法并不支持所有浏览器,在FireFox和Safari中无效。

详见

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString 

分享到:
评论

相关推荐

    js下将金额数字每三位一逗号分隔

    在JavaScript中实现金额数字每三位一逗号分隔的功能是一个常见的编程需求,尤其在财务相关的Web应用开发中。这种功能通常被称为金额格式化,目的是将数字按照人眼习惯的格式来显示,即千分位使用逗号分隔。本文将...

    数字加千分符和去千分符

    千分符(也称为分隔符)通常是一个逗号或句点,用于每三位数字之间,使得数字更易读。例如,数字1234567890经过千分符格式化后,会变为1,234,567,890。 在JavaScript中,我们可以使用内置的`toLocaleString()`方法...

    PHP实现对数字分隔加千分号的方法

    对于较大数字,添加千分号可以方便快速地读出数值。千分号是指从最右边开始,每隔三位加个逗号。这种写法很广泛,来源大概是因为英文中 Thousand,千、million,百万、billion,十亿 都是隔三位的。在这里我们使用php...

    【JavaScript源代码】vue全局实现数字千位分隔符格式.docx

    在Vue.js中,为了使大数字更易于阅读,通常会使用千位分隔符格式化。这涉及到在数字字符串中插入逗号,以便每三位数字一组进行分隔。在提供的文档中,我们看到一个名为`numberToCurrency.js`的文件,它包含了一个名...

    java字符串类型数字设置千分位分隔

    在给定的场景中,我们需要处理三种类型的数字:整数、带有小数点的数字以及负数,并且需要确保输入是有效的数字字符串。 首先,我们需要了解`DecimalFormat`类。它是`java.text`包下的一个类,主要用于格式化十进制...

    js以逗号分隔方式添加删除字符串

    当你有一个数组或多个独立的字符串,想要将它们合并成一个用逗号分隔的单一字符串时,可以使用`join()`方法。例如: ```javascript let strArray = ['苹果', '香蕉', '橙子']; let commaSeparatedStr = strArray....

    jQuery数字格式化分隔符代码

    `jQuery数字格式化分隔符代码`提供了一种高效的方法,将大数字转换为更易读的形式,通过添加分隔符如逗号或空格来提高可读性。这个插件允许开发者自定义分隔符,满足不同场景的需求。 首先,我们来理解jQuery的核心...

    js以分隔符分隔数组中的元素并转换为字符串的方法

    这个过程可以通过使用JavaScript内置的方法join()来轻松实现。join()方法在Array对象上被定义,它可以将数组的所有元素放入一个字符串中,并通过指定的分隔符来分隔每个元素。 ### join()方法的基本使用 join()...

    C#千位分隔符

    在IT领域,尤其是在软件开发与编程中,C#作为一种广泛使用的高级编程语言,其灵活性和功能强大性使得它成为处理各种数据格式的理想选择。本文将深入探讨如何在C#中实现千位分隔符的功能,并提供一个实际的代码示例,...

    jquery手机号码自动分隔

    我们使用正则`/(\d{3})(\d{4})(\d{4})/`匹配连续的3、4、4位数字,并用`$1 $2 $3`将它们替换,中间插入空格,从而达到格式化的效果。如果输入不符合手机号码规则,我们则清空输入框。 为了提高用户体验,可以考虑...

    中文数字转成阿拉伯数字 java 实现

    中文数字从个位到高位依次是:一(1)、二(2)、三(3)、四(4)、五(5)、六(6)、七(7)、八(8)、九(9)、十(10)、百(100)、千(1000)、万(10000)、亿(100000000)。而阿拉伯数字则是0-9这十个...

    android 每四个数字分隔输入框demo

    在Android开发中,有时我们需要创建特定格式的输入框,例如每输入四个数字就自动添加一个分隔符,这种功能在电话号码或者信用卡号输入时尤为常见。本篇将详细讲解如何实现这样一个“每四个数字分隔输入框”的功能。 ...

    整数每隔3位用逗号分隔数组

    本demo就是一个用逗号“,”每隔3个字符来分隔数字的功能;比如这样:123,456,789.34 .

    Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)_.docx

    Javascript 将数值转换为金额格式(分隔千分位和自动...我们讨论了三种实现方式:使用 replace() 方法和正则表达式、使用循环方式和使用正则表达式方式。每种方式都有其优缺点,开发者可以根据实际情况选择合适的方式。

    jquery数字格式化分隔符插件.zip

    jquery-number-divider是一款jquery数字格式化分隔符插件。该数字格式化插件可以按指定格式对大数字进行分隔,可以指定分隔符,是一款简单实用的数字格式化插件。 安装 可以通过bower来安装number-divider.js数字...

    JS自动格式化输入的数字/千位分隔符.rar

    千位分隔符是一种通用的数字表示方式,它用逗号或空格将数字每三位分隔开来,使得大数字更容易阅读。例如,数字"123456789"会被格式化为"123,456,789"或"123 456 789"。在财务和统计报表中,这种格式很常见。 这个...

    JS将数字转换成三位逗号分隔的样式(示例代码)

    本文介绍了一种使用JavaScript实现数字格式化的方法,即将数字转换为带有三位逗号分隔的样式。 在上述提供的内容中,展示了如何使用正则表达式配合循环替换实现数字的格式化。以下是对该内容的知识点详细解析: ...

    js版数字转千位符,通用

    ### JavaScript 实现数字转换为千位分隔符格式 #### 功能概述 本文将详细介绍一个JavaScript函数,该函数用于将数字转换成带有千位分隔符的格式,使得数字更易于阅读。例如,将数字`123456789`转换为`123,456,789`...

    Android的edittext在弹出框中实现输入自动千分位分隔和金额限制

    千分位分隔通常使用`DecimalFormat`类,它可以格式化数字,将其转换为带有千分位分隔符的字符串。例如,输入的数字1234567会被格式化成"1,234,567"。我们需要在`afterTextChanged`中捕获到输入的文本,然后用`...

Global site tag (gtag.js) - Google Analytics