我在 Javascript 中有一个数字,我知道它小于 10000 并且也是非负数。我想将它显示为四位数字,前导零。还有比下面更优雅的吗?
if(num<10) num="000"+num;
else if(num<100) num="00"+num;
else if(num<1000) num="0"+num;
我想要 Javascript 内置的东西,但我似乎找不到任何东西。
原文由 Kip 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在 Javascript 中有一个数字,我知道它小于 10000 并且也是非负数。我想将它显示为四位数字,前导零。还有比下面更优雅的吗?
if(num<10) num="000"+num;
else if(num<100) num="00"+num;
else if(num<1000) num="0"+num;
我想要 Javascript 内置的东西,但我似乎找不到任何东西。
原文由 Kip 发布,翻译遵循 CC BY-SA 4.0 许可协议
我能想到的最简单的方法是:
("000" + num).slice(-4)
填充数字是一个字符串。
当您将数字添加到字符串时,它会转换为字符串。
字符串有 slice 方法,它返回固定长度的字符串片段。
如果长度为负,则返回的字符串从字符串的末尾开始切片。
去测试:
var num=12;
console.log(("000" + num).slice(-4)); // Will show "0012"
这当然只适用于最多 4 位的正整数。一个稍微复杂的解决方案,将处理正整数:
'0'.repeat( Math.max(4 - num.toString().length, 0)) + num
通过重复添加零来创建一个字符串,只要位数(字符串长度)小于 4 添加数字,然后也将转换为字符串。
编辑: 从现在开始你应该使用这个函数:
String(num).padStart(4,'0')
它仍然不处理负数……
原文由 Simon Rigét 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答928 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
由于 ES2017 填充到最小长度可以简单地使用 String.prototype.padStart 和 String.prototype.padEnd 完成:
或者如果只有 float 的整个部分应该是固定长度:
这些简单的操作都没有使用句柄符号,仅在数字不是整数时显示小数部分,或其他情况 - 所以这是一个没有选项的简单示例格式化函数:
尽管值得注意的是,这不会处理不是数字的东西,也不会处理将 toString 转化为科学记数法的数字。