Formatuj ciąg, liczbę całkowitą z początkowymi zerami

97

Używam tego kodu:

NSString* strName = [NSString stringWithFormat:@"img_00%d.jpg", pp];

i działa dobrze, ale jeśli pp przyjął na przykład wartość 10, chciałbym mieć jako wynik img_010.jpg, a nie img_0010.jpg ... jak mogę sformatować ciąg?

dzięki

ghiboz
źródło

Odpowiedzi:

249

Użyj ciągu formatu, "img_%03d.jpg"aby uzyskać liczby dziesiętne z trzema cyframi i zerami na początku.

Gumbo
źródło
5

Dla potomnych: działa to z liczbami dziesiętnymi.

NSString *nmbrStr = @"0033620340000" ;
NSDecimalNumber *theNum = [[NSDecimalNumber decimalNumberWithString:nmbrStr]decimalNumberByAdding: [NSDecimalNumber one]] ;     
NSString *fmtStr = [NSString stringWithFormat:@"%012.0F",[theNum doubleValue]] ;

Chociaż informacje te są trudne do znalezienia, w rzeczywistości są one udokumentowane w drugim akapicie w części Podstawy formatowania. Poszukaj znaku%.

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/FormatStrings.html

McUsr
źródło
1
Zwróć uwagę, że „12” w @"%012.0F"odnosi się do całkowitej liczby cyfr, łącznie z kropką dziesiętną i wszystkim po prawej stronie.
bydło
Aby dodać do komentarza bcattle, obejmuje to również wszystko po prawej stronie . Aby wyświetlić -012,34, musisz użyć@"%07.2f"
n_b