12

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

print "%02d" % (1)
//>> "01"

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

(如果,是否也可以用空格代替零:“1”?)

4

4 回答 4

21

padStart您可以通过将数字转换为字符串来使用字符串函数toString(),然后使用padStart第一个参数是长度,第二个参数是要填充的内容进行填充。

let n = 1;
n.toString().padStart(2, "0")
//=>"01"
于 2018-01-02T14:30:34.760 回答
2

您可以尝试将最大宽度作为固定字符串添加到值中,然后将结果字符串切片为大小。

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

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

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

const v = 99;
console.log((`......${v}`).slice(-6))     // ....99
于 2019-11-01T17:55:35.123 回答
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"
于 2021-04-14T09:22:30.577 回答
1

如果您的数字只能在 0 到 99 之间,请尝试以下操作:

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

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

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

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

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

甚至这样:

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

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

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

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

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

于 2018-01-02T15:01:12.800 回答