Подтвердить что ты не робот

NSNumberformatter добавляет дополнительный ноль

Я ищу способ отображения "1" как "01", поэтому в основном все ниже 10 должно иметь ведущее 0.

Какой был бы лучший способ сделать это? Я знаю, что могу просто использовать простую структуру if для этой проверки, но это должно быть возможно с помощью NSNumberformatter правильно?

4b9b3361

Ответ 1

Если вы просто хотите NSString, вы можете просто сделать это:

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

%02d от C.% 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];

---- UPDATE ------ Я думаю, что это решает вашу проблему:

[_minutes addObject:[NSNumber numberWithInt:i]];
return [NSString stringWithFormat:@"%02d", [[_minutes objectAtIndex:row] intValue]]; 

Ответ 2

FIXED для 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))!

OUTPUT

"+0000000999,1"