2016-11-21 17 views
6

Mam numer powiedzmy 9. Ale potrzebuję go jako napis "09".Angular2 lub TypeScript Left padding a String with Zeros

Wiem, że mogę napisać własną logikę. Ale szukam ukrytej funkcji utylizacyjnej, która może ją obsłużyć.

Używam angular2 z TypeScript. Szukasz czegoś takiego jak this.

Wystarczy Podobnie jak Java

String.format("%010d", Integer.parseInt(mystring)); 
+0

patrz [Jak mogę utworzyć Zerofilled wartość przy użyciu JavaScript?] (http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript) –

+0

Nie sądzę, że angularjs lub angular2 zapewniają taką metodę. –

+0

TypeScript i JavaScript nie mają wbudowanego formatu ani funkcji sprintf. Jeśli chcesz, możesz skorzystać z [strony trzeciej] (http://stackoverflow.com/q/36495685/6923555). – Rodrigo

Odpowiedz

11

Można utworzyć własną funkcję do tego. Aby sformatować numer, musisz najpierw przekonwertować go na ciąg znaków.

function pad(num, size) { 
    let s = num+""; 
    while (s.length < size) s = "0" + s; 
    return s; 
} 

maszynopis

pad(num:number, size:number): string { 
    let s = num+""; 
    while (s.length < size) s = "0" + s; 
    return s; 
} 

Edit: Istnieje kilka lepszych i bardziej wydajnych sposobów, aby to zrobić. Zobacz dyskusję w tej odpowiedzi: https://stackoverflow.com/a/9744576/1734678 (polecam czytanie większość złożonych odpowiedzi, jeśli masz czas)

0

z najnowszymi maszynopis, można zrobić:

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) ; 
}