在JavaScript中用逗号格式化数字

我找到了一个很好的函数,详细介绍了如何在JavaScript中用逗号格式化数字,并认为我会在此处重现它。它基本上接受任何数字,然后将其转换为带格式的字符串,并以逗号分隔千位。该number_format()功能在PHP中可用,在通过AJAX调用返回格式之前,我一直依靠PHP来对格式进行排序。现在,我可以将此函数包含到我的JavaScript库中,并在客户端进行此操作。

该函数通过使用正则表达式先将字符串拆分为整数和十进制,然后再按三位数的组将数字拆分。

使用的正则表达式为(\ d +)(\ d {3}),该表达式查找三个数字的序列,后跟任意数字。这是一个小技巧,可导致正则表达式引擎从右到左而不是从左到右工作。

function addCommas(nStr){

 nStr += '';

 var x = nStr.split('.');

 var x1 = x[0];

 var x2 =x.length> 1 ? '.' + x[1] : '';

 var rgx = /(\d+)(\d{3})/;

 while (rgx.test(x1)) {

  x1 = x1.replace(rgx, '$1' + ',' + '$2');

 }

 return x1 + x2;

}

这会导致在每个第三个数字字符中添加一个逗号。因此,对于数字123456,将返回字符串123,456。这里还有更多示例。

addCommas(1000); // 1,000

addCommas(12345); // 12,345

addCommas(1234567890); // 1,234,567,890

addCommas(12345.1234); // 12,345.1234

该站点还详细介绍了格式化数字的创建过程,其中包括不同的参数。这意味着您可以使用任何东西,而不用逗号分隔三个数字的块。

function addSeparatorsNF(nStr, inD, outD, sep){

 nStr += '';

 var dpos = nStr.indexOf(inD);

 var nStrEnd = '';

 if (dpos != -1) {

  nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);

  nStr = nStr.substring(0, dpos);

 }

 var rgx = /(\d+)(\d{3})/;

 while (rgx.test(nStr)) {

  nStr = nStr.replace(rgx, '$1' + sep + '$2');

 }

 return nStr + nStrEnd;

}

之所以创建此函数,是因为并非每个数字都采用相同的格式。例如,数字1234的格式可能为1,234甚至是1.234。

该函数采用以下参数

  • nStr:这是要格式化的数字。这可能是数字或字符串。没有对此输入进行验证。

  • inD:这是字符串的十进制字符。这通常是一个点,但可能还有其他东西。

  • outD:这是将十进制字符更改为的内容。

  • sep:这是分隔符,通常是逗号。

该函数采用输入字符串,并根据小数点字符将其分为两部分。小数点前的字符串与前一个函数使用的正则表达式相同,主要区别是分隔符取自函数参数。

这里有一些例子。

alert(addSeparatorsNF(1234567890,'.','.',',')); // 1,234,567,890

alert(addSeparatorsNF(12345.1234,'.','POINT','COMMA')); // 第12章

alert(addSeparatorsNF(12345.1234,'5','POINT','COMMA')); // 1COMMA234POINT.1234

alert(addSeparatorsNF('1234,56',',','.',',')); // 1,234.56

以上是 在JavaScript中用逗号格式化数字 的全部内容, 来源链接: utcz.com/z/311496.html

回到顶部