问题
I have a number let say 9. But I need it as String "09".
I know i can write my own logic. But I am looking for a implicit util function which can pad it.
I am using angular2 with TypeScript. Looking for something like this.
Just Similar like java
String.format("%010d", Integer.parseInt(mystring));
回答1:
You can create your own function for this. To format the number you will have to convert it to a string first.
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;
}
Edit: There are a couple of better and more performant ways to do this. See the discussion in this Answer: https://stackoverflow.com/a/9744576/1734678 (I recommend reading most of the submitted answers if you got time)
Update: ECMAScript 2017 now has support for string padding
str.padStart(targetLength [, padString])
str.padEnd(targetLength [, padString])
Check https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
回答2:
Since Angular v4 there is DecimalPipe which let's easily add leading zeros: https://angular.io/api/common/DecimalPipe
In your html, you can use then something like:
{{ myNumber | number:'2.0' }}
回答3:
You can use one of below templates in HTML
{{ ("00" + 9).slice(-2) }} // 09
Or
{{ 9 | number: '2.' }} // 09
Or in component ts code file
var x = ("00" + 9).slice(-2);
回答4:
With the latest Typescript, you can do:
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) ;
}
回答5:
public 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);
}
回答6:
You can create a Pipe for that
{{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);
}
}
来源:https://stackoverflow.com/questions/40716894/angular2-or-typescript-left-padding-a-string-with-zeros