我有一个数字,比如说9。但我需要把它变成字符串“09”。
我知道我可以自己编写逻辑。但我正在寻找一个隐式的实用函数来填充这个数字。
我正在使用TypeScript的Angular2。类似于这样的东西。
就像Java中一样:
String.format("%010d", Integer.parseInt(mystring));
我有一个数字,比如说9。但我需要把它变成字符串“09”。
我知道我可以自己编写逻辑。但我正在寻找一个隐式的实用函数来填充这个数字。
我正在使用TypeScript的Angular2。类似于这样的东西。
就像Java中一样:
String.format("%010d", Integer.parseInt(mystring));
您可以为此创建自己的函数。要格式化数字,您首先必须将其转换为字符串:
function pad(num, size) {
let s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
TypeScript:
pad(num:number, size:number): string {
let s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
编辑: 有几种更好、更高效的方法可以实现这一点。请查看此答案中的讨论(如果您有时间,我建议阅读大多数提交的答案):https://dev59.com/oHM_5IYBdhLWcg3wslbs#9744576
更新: ECMAScript 2017 现在支持字符串填充:
str.padStart(targetLength [, padString])
str.padEnd(targetLength [, padString])
查看padStart
的文档。
编辑:如其他人所述,自Angular 4以来,您可以使用此功能:
{{ myNumber | number:'2.0' }}
{{ myNumber | number:'2.0' }}
您可以在HTML中使用以下任意一个模板:
{{ ("00" + 9).slice(-2) }} // 09
或者
{{ 9 | number: '2.' }} // 09
或者在组件的 TypeScript 代码文件中。
var x = ("00" + 9).slice(-2);
str.padStart(9 ,"0")
使用最新的 TypeScript,您可以进行以下操作:
let myStr:string = padLeft('123', '0', 6); // '000123'
padLeft(text:string, padChar:string, size:number): string {
return (String(padChar).repeat(size) + text).substr( (size * -1), size) ;
}
(String(padChar).repeat(size - text.length) + text)
呢? - Joel Harkespublic padIntegerLeftWithZeros(rawInteger: number, numberOfDigits: number): string {
let paddedInteger: string = rawInteger + '';
while (paddedInteger.length < numberOfDigits) {
paddedInteger = '0' + paddedInteger;
}
return paddedInteger;
}
public zeroPadIntegerLeft3Digits(rawInteger: number): string {
return this.padIntegerLeftWithZeros(rawInteger, 3);
}
{{ID |LeftPadFilter: ID}}
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'LeftPadFilter',
pure: false
})
export class LeftPadFilter implements PipeTransform {
transform(item: string): string {
return (String('0').repeat(2) + item).substr((2 * -1), 2);
}
}
export function Dx(num: any, dn: number = 2) {
return ("0".repeat(dn) + Math.floor(num)).slice(-dn);
}