Frage Wie kann ich eine Ganzzahl auf der linken Seite mit Nullen auffüllen?


Ich habe folgende Variable:

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

Welche gibt 42 zurück. Wie kann ich diese Zahl auf 10 Ziffern auf der linken Seite mit Nullen auffüllen? Die Ausgabe sollte aussehen wie,

0000000042

oder wenn es 420 wäre,

0000000420


36
2018-06-17 19:17


Ursprung


Antworten:


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

EDIT: Es ist C-Stil-Formatierung. % nd bedeutet, dass die Breite mindestens n ist. Wenn also die Ganzzahl 2-stellig ist, haben Sie eine Länge von 3 Zeichen (wenn% 3d verwendet wird). Standardmäßig sind die linken leeren Felder mit Leerzeichen gefüllt. % 0nd (0 zwischen% und n) bedeutet, dass 0 für das Auffüllen anstelle von Leerzeichen verwendet wird. Hier n ist die Gesamtlänge. Wenn die Ganzzahl kleiner als ist n Ziffern wird dann links Padding verwendet.


95
2018-06-17 19:21



Das Objective-C Weg,

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

Das C Weg ist jedoch schneller.


15
2018-06-17 19:29



Sie können nicht in der NSNumber selbst. Wenn Sie eine Zeichenfolge aus der Zahl erstellen oder verwenden NSLog()verwende einfach das geeignete Format, z.

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

8
2018-06-17 19:23



Sie können so viele Formatierungen durchführen, wie Sie möchten NSNummerFormatierer. In diesem Fall denke ich, dass Sie das verwenden möchten setFormatWidth: und setPaddingCharakter: Funktionen.


3
2018-06-17 19:29



mit Variable num_digits

NSString* format =[NSString stringWithFormat:@"%%0%zdzd", num_digits];
NSString *theString = [NSString stringWithFormat:format, 42];

1
2018-05-30 03:05



Z.B. Fülle den Rest mit Nullen, 5 Ziffern:

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

Äquivalent von .02f für die Float-Nummer, wenn Sie nur 2 Ziffern nach dem Punkt benötigen.

Also haben Sie 0 = füllen mit Nullen, 5 = die Anzahl der Ziffern und geben Sie ein.


0
2018-02-22 15:49



Lösung für 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))!

AUSGABE

"0000001078.1"


0
2018-01-28 06:32