在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