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

时间:2011-06-17 19:17:25

标签: objective-c ios cocoa-touch

我有以下变量:

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

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

  

0000000042

或者如果它是420,

  

0000000420

7 个答案:

答案 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)

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

<强>输出

&#34; 0000001078.1&#34;