Angular2或TypeScript左边填充一个带有零的字符串

时间:2016-11-21 09:35:32

标签: string angular typescript padding

我有一个数字可以说9.但我需要它作为String" 09"。

我知道我可以写自己的逻辑。但我正在寻找一个隐含的util函数,它可以填充它。

我在TypeScript中使用angular2。寻找类似this的内容。

就像java一样

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

7 个答案:

答案 0 :(得分:29)

您可以为此创建自己的功能。要格式化数字,首先必须将其转换为字符串。

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

编辑:有几种更好,更高效的方法可以做到这一点。 请参阅本答案中的讨论:https://stackoverflow.com/a/9744576/1734678(如果您有时间,我建议您阅读大部分提交的答案)

更新:ECMAScript 2017现在支持字符串填充

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

检查https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

答案 1 :(得分:12)

由于Angular v4有DecimalPipe,可以轻松添加前导零:https://angular.io/api/common/DecimalPipe

在你的html中,你可以使用类似的东西:

{{ myNumber | number:'2.0' }}

答案 2 :(得分:4)

使用最新的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) ;
}

答案 3 :(得分:3)

如果我想在开始处填充“ 0” ,并且希望字符串 str 的长度为 9

str.padStart(9 ,"0")

答案 4 :(得分:2)

您可以在HTML中使用以下模板之一

double

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

或在组件ts代码文件中

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

答案 5 :(得分:1)

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 :(得分:0)

您可以为此创建一个管道

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