我试图用逗号作为千位分隔符在JavaScript中打印一个整数.例如,我想将数字1234567显示为"1,234,567".我该怎么做呢?
我是这样做的:
function numberWithCommas(x) {
x = x.toString();
var pattern = /(-?\d+)(\d{3})/;
while (pattern.test(x))
x = x.replace(pattern, "$1,$2");
return x;
}
Run Code Online (Sandbox Code Playgroud)
有更简单或更优雅的方式吗?如果它也适用于浮点数会很好,但这不是必需的.它不需要特定于语言环境来决定句点和逗号.
我想将html内容上的每个数字转换为波斯数字而不影响页面元素.
例如:
<div style='color: #c2c2c2'>
text number 1
<span>text number 2</span>
<div>
text number 3
<b>text number 4</b>
<a href='#page2'>text number 5</a>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
转换成 :
<div style='color: #c2c2c2'>
text number ?
<span>text number ?</span>
<div>
text number ?
<b>text number ?</b>
<a href='#page2'>text number ?</a>
</div>
</div>
persian = array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
english = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在阅读Unicode @ Wikipedia(阿拉伯语Unicode)的规范,我看到每个阿拉伯数字都有2个Unicode代码点.例如,1定义为U + 0661和U + 06F1.
我应该使用哪一个?
在Unicode的十进制数字类别中,定义了460个十进制字符(有关示例,请参阅此页面).不幸的是,无论外观如何,我找不到任何代表数字的字符.结果,目前只有西方阿拉伯数字字符被大多数软件理解为数字.因此,您无法在MS Excel中输入其他数字字符.

如果Unicode(至少)10个数字0到9的代码作为纯数字而不是字形,我们几乎可以在所有正常使用中使用它们,并且主机环境可以根据用户的语言环境显示本地化的数字字形.当我们想要将数字字形作为字符串使用时,我们也可以使用460个十进制Unicode数字中的任何一个.
另一方面,如果我们接受当前字符U + 0030到u + 0039作为纯数字,那么我们需要十个新字符用于西方阿拉伯数字.这种实现似乎也更向后兼容.字符U + 0030到U + 0039的名称也不是指任何特定数字的外观.
显然,我们可以在应用程序中对所有460个十进制数字字符进行硬编码,并在内部将它们视为数字,但我正在寻找更合适的解决方案.如果我们还考虑包含罗马和旧波斯数字的224 + 464个其他Unicode数字字符(Nl类别+无类别),则问题会变得更加复杂.
我们如何通过OS范围的解决方案解决这个问题?
javascript ×2
numbers ×2
unicode ×2
arabic ×1
character ×1
formatting ×1
html ×1
jquery ×1
localization ×1