2012-06-21 1 views
10

Я ищу способ отображения «1», как «01», так что в основном все, что ниже 10 должны иметь ведущее 0.NSNumberformatter добавить дополнительный ноль

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

+0

См [мой ответ] (http://stackoverflow.com/a/25567534/1966109), который предлагает до 3-х решений по аналогичному вопросу помеченного 'swift'. –

ответ

21

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

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

%02d от C.% й означает, что должно быть, по крайней мере, п символов в строке и если есть меньше, подушечка это с 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]]; 
+0

Спасибо, это обязательно поможет. Но возможно ли, что получение stringValue снова удалит 0? Я использую это в UIPickerView, но, возможно, лучше сделать это в titleForRow –

+0

[_minutes addObject: [NSNumber numberWithInt: i]]; return [NSString stringWithFormat: @ "% 02 @", [_minutes objectAtIndex: row]]; Это, похоже, возвращает «1», «2» –

+0

СтрокаValue не удалит 0 снова, потому что строка представляет собой последовательность символов. В строке буква «а», например, такая же, как «0». Строка просто хранит символы, а буквы и цифры - символы. – pasawaya

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"