Angular2 или TypeScript Левое дополнение строки с нулями

У меня есть номер let say 9. Но мне нужно это как String "09".

Я знаю, что могу написать свою собственную логику. Но я ищу неявную функцию использования, которая может использовать ее.

Я использую angular2 с TypeScript. Ищете что-то вроде этого.

Просто похоже на java

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

Ответ 1

Вы можете создать свою собственную функцию для этого. Чтобы отформатировать номер, вам нужно сначала преобразовать его в строку.

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

Машинопись

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

Изменить: Есть несколько лучших и более эффективных способов сделать это. См. Обсуждение в этом ответе: fooobar.com/questions/20861/... (я рекомендую прочитать большинство представленных ответов, если у вас есть время)

Обновление: ECMAScript 2017 теперь имеет поддержку для заполнения строки

str.padStart(targetLength [, padString])
str.padEnd(targetLength [, padString])

Проверьте https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

Ответ 2

Поскольку Angular v4 имеет DecimalPipe, который позволяет легко добавлять начальные нули: https://angular.io/api/common/DecimalPipe

В вашем html вы можете использовать что-то вроде:

{{ myNumber | number:'2.0' }}

Ответ 3

С последним 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) ;
}

Ответ 4

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

Ответ 5

Вы можете использовать один из следующих шаблонов в HTML

{{ ("00" + 9).slice(-2) }} // 09

Или же

{{ 9 | number: '2.' }} // 09

Или в кодовом файле компонента TS

var x = ("00" + 9).slice(-2);

Ответ 6

Вы можете создать трубу для этого

{{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(4) + item).substr((4 * -1), 4);
    }
}