我怎样才能填充左边的整数零?

我有以下variables:

NSNumber *consumption = [dict objectForKey:@"con"]; 

这将返回42.如何将此数字填充到左侧的10个数字,以零开头。 输出应该看起来像,

0000000042

或者如果它是420,

0000000420

 NSString *paddedStr = [NSString stringWithFormat:@"%010d", 42]; 

编辑:这是C风格格式。 %nd表示宽度至less为n。 所以如果整数是2位长,那么你将有长度为3的string(当使用%3d时)。 默认情况下,左边的空白空间被填充。 %0nd(%和n之间的0)表示0用于填充而不是空格。 这里n是总长度。 如果整数小于n位,则使用左填充。

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

C方式虽然更快。

你不能在NSNumber本身。 如果你从数字或者使用NSLog()创build一个string,只需使用适当的格式,例如

 NSLog(@"%010d", [consumption intValue]); 

你可以用NSNumberFormatter来完成你想要的任何数字格式。 在这种情况下,我想你会想要使用setFormatWidth:和setPaddingCharacter:函数。

例如用零填充其余的5个数字:

 NSInteger someValue = 10; [NSString stringWithFormat:@"%05ld", someValue]; 

点号后只需要2位数的浮点数就相当于.02f

所以你有0 =填零,5 =数字和types的数量。

解决scheme为Swift 3

 let x = 1078.1243 let numFormatter = NumberFormatter() numFormatter.minimumFractionDigits = 1 // for float numFormatter.maximumFractionDigits = 1 // for float numFormatter.minimumIntegerDigits = 10 // how many digits do want before decimal numFormatter.paddingPosition = .beforePrefix numFormatter.paddingCharacter = "0" let s = numFormatter.string(from: NSNumber(floatLiteral: x))! 

OUTPUT

“0000001078.1”