我正在寻找数字的格式说明符方案,它具有日常无处不在的“YYYY-MM-DD”等格式说明符的特征。我正在寻找:
即使我的目标域是JavaScript(即格式化Number
个实例),我更喜欢标准,直观的说明符方案,而不是JavaScript本机。不,我认为printf
数字格式说明符不够直观,无法呈现给用户。
我到目前为止提出的方案是:
#,###.##
说:
我对这个计划感到“惭愧”,并且在看到更好的替代品之前,不想投入太多时间来实施它。
我还经历过的是,要使用格式说明符并实际使用具有千位/小数分隔符的不同属性的首选项对象,小数位数等,并通过向用户提供样本编号来抽象它要从中选择的输出。
我是否应该忘记使用格式说明符方案,只使用在表示层抽象的一组属性?是否有符合我在顶部提到的3个标准的标准(ish)说明符?
在一天结束时,我不是没有解决方案而且我已经足够让我离开了。我只是在寻找更理想的解决方案。
答案 0 :(得分:1)
XSLT是一种具有comprehensive decimal-format方案的标准。
format-number(5351,"#,###.##")
ECMA-402是另一种具有数字格式API的标准:
可以使用具有所需语言环境标记和选项的
Intl.NumberFormat
构造函数构建对区域性敏感的NumberFormat对象。NumberFormat
对象的格式方法可用于根据区域设置和选项集格式化数字数据。Number.prototype.toLocaleString
也已更新为内部使用Intl.NumberFormat
进行文化敏感格式化,现在支持两个可选参数 - 语言环境和选项。
var number = 1123456.789;
// request a US formatted number
console.log("United States: " + new Intl.NumberFormat('en-US').format(number));
// limit to three significant digits
console.log("3 significant digits: " + new Intl.NumberFormat('en-US', { maximumSignificantDigits: 3 }).format(number));
// request a French formatted number
console.log("France: " + new Intl.NumberFormat('fr-FR').format(number));
// request a Indian formatted number
console.log("India: " + new Intl.NumberFormat('en-IN').format(number));
更加用户友好的解决方案类似于CFML的NumberFormat或DecimalFormat方案。
<强>参考强>