JS ES6模板文字和前导/后缀零到数字

时间:2018-01-02 14:25:44

标签: javascript ecmascript-6 template-literals

在Python中,可以在构建像这样的字符串时将前导零附加到数字

<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="advisor-map"></div>

是否可以对ES6模板文字做同样的事情?

(如果,也可以用空格而不是零来做同样的事情:“1”?)

4 个答案:

答案 0 :(得分:5)

您可以使用字符串函数padStart,将数字转换为带有toString()的字符串,然后使用padStart填充,其中第一个参数是长度,第二个是填充的内容

let n = 1;
n.toString().padStart(2, "0")
//=>"01"

答案 1 :(得分:2)

您可以尝试将最大宽度作为固定的字符串添加到该值之前,然后将生成的字符串切成大小。

示例:假设您希望数字以句点填充,最大宽度为6

console.log((`......${123}`).slice(-6));  // ...123

console.log((`......${12345}`).slice(-6)) // .12345

const v = 99;
console.log((`......${v}`).slice(-6))     // ....99

答案 2 :(得分:1)

一种紧凑的方法,避免使用 toString()。

let n = 3;   
n = ("0"+n).substr(-2); // n === "03"

-2 是所需长度乘以 -1。将“0”更改为要填充的最大字符数。 对于 %03d:

let n = 3;   
n = ("00"+n).substr(-3); // n === "003"

答案 3 :(得分:0)

如果你的号码只能在0到99之间,那么试试这个:

&#13;
&#13;
for (let n = 0; n < 10; n++) {
  console.log(n.toString().padStart(2, "0"));
}
&#13;
&#13;
&#13;

如果你想使用空格,那就试试这个:

&#13;
&#13;
for (let n = 0; n < 10; n++) {
  console.log(n.toString().padStart(2, " "));
}
&#13;
&#13;
&#13;

如果您不想使用padStart,请尝试以下操作:

&#13;
&#13;
for (let n = 0; n < 100; n+=5) {
  console.log(('0'+n.toString()).slice(-2));
}
&#13;
&#13;
&#13;

甚至这个:

&#13;
&#13;
for (let n = 0; n < 100; n+=5) {
  console.log(`0${n}`.slice(-2));
}
&#13;
&#13;
&#13;

最后一个使用ES6文字,但仍使用slice仅获取最后2个字符。

要在最后两个空格中使用空格,只需将0更改为“空格。

String.padStart仅适用于较新的浏览器版本。所以你可能需要一个polyfill。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart