如何用零填充左侧的整数?

Geo*_*ton 37 cocoa-touch objective-c ios

我有以下变量:

NSNumber *consumption = [dict objectForKey:@"con"];
Run Code Online (Sandbox Code Playgroud)

返回42.如何将此数字填充到左侧的10位数,以零为前导.输出应该看起来像,

0000000042

或者如果它是420,

0000000420

tas*_*oor 97

NSString *paddedStr = [NSString stringWithFormat:@"%010d", 42];
Run Code Online (Sandbox Code Playgroud)

编辑:这是C风格的格式.%nd表示宽度至少为n.因此,如果整数长度为2位,那么您将使用长度为3的字符串(使用%3d时).默认情况下,左侧空白空间由空格填充.%0nd(%和n之间的0)表示0用于填充而不是空格.这n是总长度.如果整数小于n数字,则使用左填充.


Dee*_*olu 15

Objective-C方式,

NSNumberFormatter * numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setPaddingPosition:NSNumberFormatterPadBeforePrefix];
[numberFormatter setPaddingCharacter:@"0"];
[numberFormatter setMinimumIntegerDigits:10];

NSNumber * number = [NSNumber numberWithInt:42];

NSString * theString = [numberFormatter stringFromNumber:number];

NSLog(@"%@", theString);
Run Code Online (Sandbox Code Playgroud)

C方式更快.


puz*_*zle 8

你不能在NSNumber自己身上.如果您要使用数字或使用创建字符串NSLog(),只需使用适当的格式,例如

NSLog(@"%010d", [consumption intValue]);
Run Code Online (Sandbox Code Playgroud)