javascript - 模板字符串中的数字格式(Javascript - ES6)

标签 javascript string-formatting ecmascript-6 template-strings

我想知道是否可以在 Javascript 模板字符串中格式化数字,例如:

var n = 5.1234;
console.log(`This is a number: $.2d{n}`);
// -> 5.12

或者可能

var n = 5.1234;
console.log(`This is a number: ${n.toString('.2d')}`);
// -> 5.12

该语法显然不起作用,它只是我正在寻找的事物类型的说明。

我知道 underscore.string 中有像 sprintf 这样的工具,但这似乎是 JS 应该能够开箱即用的东西,特别是考虑到模板字符串。

编辑

如上所述,我已经知道第三方工具(例如 sprintf)和自定义函数可以执行此操作。类似的问题(例如 JavaScript equivalent to printf/String.Format )根本没有提到模板字符串,可能是因为它们是在 ES6 模板字符串出现之前就被问到的。我的问题是针对 ES6 的,与实现无关。如果是这种情况,我很高兴接受“不,这是不可能的”的答案,但是最好的是有关提供此功能的新 ES6 功能的信息,或者了解此类功能是否在其上方式。

最佳答案

不,ES6 没有引入任何新的数字格式化功能,您将不得不接受现有的 .toExponential(fractionDigits) , .toFixed(fractionDigits) , .toPrecision(precision) , .toString([radix])toLocaleString(…) (不过,它已更新为可选择支持 ECMA-402 Standard )。
模板字符串与数字格式无关,它们只是对函数调用(如果标记)或字符串连接(默认)进行脱糖。

如果这些 Number 方法对您来说不够,您将不得不推出自己的方法。如果您愿意,您当然可以将格式化函数编写为模板字符串标记。

关于javascript - 模板字符串中的数字格式(Javascript - ES6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746166/

相关文章:

javascript - 如何将series-label默认设置为false并更改highchart中系列标签文本的颜色

javascript - 遍历JavaScript中的数组

javascript - 如何阻止对 CKEDITOR textarea 中的某些内容进行编辑?

java - 如何在 Java 中格式化 Twitter 时间戳?

c - vsnprintf 为什么会导致格式字符串漏洞

javascript - React 0.13.3 给出的 Super 表达式必须为 null 或函数,而不是对象

Javascript (ES6) 可迭代流

javascript - 读取大文件和splitby方法

c++ - 如何创建可变参数模板字符串格式化程序

javascript - 如何从数组中解构键(ES6)