是否可以使用CSS格式化数字?包括小数位、小数点分隔符、千位分隔符等。
不幸的是,目前CSS无法实现此功能,但您可以使用Number.prototype.toLocaleString()
。 它还可以格式化其他数字格式,例如拉丁文,阿拉伯文等。
<span>2 500</span>
传递到浏览器。在阿拉伯语版本(带有body.rtl_ { direction: rtl; }
),这个例子突然变成了500 2
。 - Alex Naidovichdirection: ltr;
。总之 - 我们正在评论的答案完全没有问题。 - Alex Naidovich嗯,在JavaScript中,我通常使用下面的代码来处理数字:
var a = "1222333444555666777888999";
a = a.replace(new RegExp("^(\\d{" + (a.length%3?a.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
如果你需要使用其他分隔符,例如逗号:
var sep = ",";
a = a.replace(/\s/g, sep);
或者作为一个函数:
function numberFormat(_number, _sep) {
_number = typeof _number != "undefined" && _number > 0 ? _number : "";
_number = _number.replace(new RegExp("^(\\d{" + (_number.length%3? _number.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim();
if(typeof _sep != "undefined" && _sep != " ") {
_number = _number.replace(/\s/g, _sep);
}
return _number;
}
_number.replace
之前,我们必须确保它是一个字符串,像这样:_number = typeof _number != "undefined" && _number > 0 ? String(_number) : "";
否则你会得到一个错误 _number.replace
未定义或不是一个函数。 - Shalkam可能最好的方法是将一个带有表示您格式的类的标记设置为组合,然后在DOM加载时使用Jquery .each对这些标记进行格式化...
并非答案,但或许会引起兴趣。几年前,我向CSS工作组提出了一份建议。然而,目前还没有任何进展。如果他们(以及浏览器供应商)将此视为真正的开发者关注点,也许球就可以开始滚动了?
rtl
为例,它以不同的方式显示相同的内容:它是否也应该在服务器端处理? - Don如果有帮助...
我使用PHP函数number_format()
和窄间隔不换行空格( 
)。它经常被用作无歧义的千位分隔符。
echo number_format(200000, 0, "", " ");
echo "<span class='number'>".number_format(200000, 0, "", "<span></span>")."</span>";
.number SPAN{
padding: 0 1px;
}
使用纯CSS+HTML和伪类:lang()
来实现另一种解决方案。
使用一些HTML标记将数值标记为thousands-separator
和decimal-separator
类:
<html lang="es">
Spanish: 1<span class="thousands-separator">200</span><span class="thousands-separator">000</span><span class="decimal-separator">.</span>50
</html>
lang
来格式化数字。/* Spanish */
.thousands-separator:lang(es):before{
content: ".";
}
.decimal-separator:lang(es){
visibility: hidden;
position: relative;
}
.decimal-separator:lang(es):before{
position: absolute;
visibility: visible;
content: ",";
}
/* English and Mexican Spanish */
.thousands-separator:lang(en):before, .thousands-separator:lang(es-MX):before{
content: ",";
}
我认为您无法做到。如果您使用PHP编程,可以使用number_format()。其他编程语言也有格式化数字的功能。
۵۰٬۰۰۰
(波斯语)和٥٠٬٠٠٠
(阿拉伯语)是相同的数据(50,000
)。 - Mir-Ismaili