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