我怎样才能填充左边的整数零?
我有以下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”