Kip*_*Kip 38 javascript formatting
我在Javascript中有一个数字,我知道它不到10000而且也是非负数.我想将它显示为一个四位数字,带有前导零.有没有比以下更优雅的东西?
if(num<10) num="000"+num;
else if(num<100) num="00"+num;
else if(num<1000) num="0"+num;
Run Code Online (Sandbox Code Playgroud)
我想要一些内置于Javascript中的东西,但我似乎找不到任何东西.
Sim*_*gét 78
我想到的最简单的方法是:
("000" + num).slice(-4)
Run Code Online (Sandbox Code Playgroud)
填充数字是一个字符串.
向字符串添加数字时,会将其转换为字符串.
字符串具有方法切片,可以重新调整字符串的固定长度.
如果length为负,则返回的字符串将从字符串的末尾开始切片.
去测试:
var num=12;
console.log(("000" + num).slice(-4)); // Will show "0012"
Run Code Online (Sandbox Code Playgroud)
(因为这只适用于最多4位数的正整数)
Chr*_*ann 42
我不认为JavaScript语言中有任何"构建"用于执行此操作.这是一个简单的函数:
function FormatNumberLength(num, length) {
var r = "" + num;
while (r.length < length) {
r = "0" + r;
}
return r;
}
FormatNumberLength(10000, 5) outputs '10000'
FormatNumberLength(1000, 5) outputs '01000'
FormatNumberLength(100, 5) outputs '00100'
FormatNumberLength(10, 5) outputs '00010'
Run Code Online (Sandbox Code Playgroud)
Can*_*var 16
这可能有所帮助:
String.prototype.padLeft = function (length, character) {
return new Array(length - this.length + 1).join(character || '0') + this;
}
var num = '12';
alert(num.padLeft(4, '0'));
Run Code Online (Sandbox Code Playgroud)
RJG*_*ngs 13
由于ES2017填充到最小长度可以使用 String.prototype.padStart 和 String.prototype.padEnd完成:
let num = 3
let str = num.toString().padStart(3, "0")
console.log(str) // "003"
Run Code Online (Sandbox Code Playgroud)
或者,如果只有float的整个部分应该是固定长度:
let num = 3.141
let arr = num.toString().split(".")
arr[0] = arr[0].padStart(3, "0")
let str = arr.join(".")
console.log(str) // "003.141"
Run Code Online (Sandbox Code Playgroud)
一个有趣(但有趣)的方式用零前缀数字:
function FormatInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
Run Code Online (Sandbox Code Playgroud)
国际化 API 的数字格式甚至可以做到这一点:
const digits3 =
new Intl.NumberFormat(
undefined,
{ minimumIntegerDigits: 3, maximumSignificantDigits: 3 });
digits3.format(42);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
73116 次 |
最近记录: |