我有以下变量:
NSNumber *consumption = [dict objectForKey:@"con"];
返回42.如何将此数字填充到左侧的10位数,以零为前导。输出应该看起来像,
0000000042
或者如果它是420,
0000000420
答案 0 :(得分:97)
NSString *paddedStr = [NSString stringWithFormat:@"%010d", 42];
编辑:这是C风格格式。 %nd表示宽度至少为n。因此,如果整数长度为2位,那么您将使用长度为3的字符串(使用%3d时)。默认情况下,左侧空白空间由空格填充。 %0nd(%和n之间的0)表示0用于填充而不是空格。这里n
是总长度。如果整数小于n
个数字,则使用左填充。
答案 1 :(得分: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);
虽然C
方式更快。</ p>
答案 2 :(得分:8)
你不能在NSNumber
本身。如果您要使用数字创建字符串或使用NSLog()
,只需使用适当的格式,例如
NSLog(@"%010d", [consumption intValue]);
答案 3 :(得分:3)
您可以使用NSNumberFormatter完成您想要的任何数字格式。在这种情况下,我认为您希望使用setFormatWidth:和setPaddingCharacter:函数。
答案 4 :(得分:1)
变量 num_digits
NSString* format =[NSString stringWithFormat:@"%%0%zdzd", num_digits];
NSString *theString = [NSString stringWithFormat:format, 42];
答案 5 :(得分:0)
<强> E.g。用零,5位数填充其余部分:
NSInteger someValue = 10;
[NSString stringWithFormat:@"%05ld", someValue];
当您只需要点后2位数时,浮点数的等效值为.02f
。
所以你有0 =用零填充,5 =数字和类型。
答案 6 :(得分:0)
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))!
<强>输出强>
&#34; 0000001078.1&#34;