11

我正在寻找一种将“1”显示为“01”的方法,所以基本上10以下的所有内容都应该有一个前导0。

最好的方法是什么?我知道我可以使用一个简单的 if 结构来进行此检查,但这应该可以使用 NSNumberformatter 来实现,对吧?

4

2 回答 2

24

如果你只想要一个 NSString,你可以简单地这样做:

NSString *myNumber = [NSString stringWithFormat:@"%02d", number];

来自%02dC。 %nd 表示字符串中必须至少有 n 个字符,如果更少,则用 0 填充。这是一个例子:

NSString *example = [NSString stringWithFormat:@"%010d", number];

如果number变量只有两位数,那么它会以八个零作为前缀。如果它是 9 位长,它将以一个零作为前缀。

如果你想使用 NSNumberFormatter,你可以这样做:

NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setPaddingPosition:NSNumberFormatterPadBeforePrefix];
[numberFormatter setPaddingCharacter:@"0"];
[numberFormatter setMinimumIntegerDigits:10];
NSNumber *number = [NSNumber numberWithInt:numberVariableHere];

----更新-----我认为这可以解决您的问题:

[_minutes addObject:[NSNumber numberWithInt:i]];
return [NSString stringWithFormat:@"%02d", [[_minutes objectAtIndex:row] intValue]]; 
于 2012-06-21T04:28:56.490 回答
8

为 Swift 3 修复

let x = 999.1243
let formatter = NumberFormatter()
formatter.minimumFractionDigits = 1 // for float
formatter.maximumFractionDigits = 1 // for float
formatter.minimumIntegerDigits = 10 // digits do want before decimal
formatter.paddingPosition = .beforePrefix
formatter.paddingCharacter = "0"

let s = formatter.string(from: NSNumber(floatLiteral: x))!

输出

“0000000999.1”

于 2017-01-28T08:27:47.530 回答