2012-11-29 17 views
9

AFAIK jest niemożliwe używając tylko [NSString stringWithFormat: @ "% d"], ponieważ nie ma żadnych specyfikacji dla jawnego wyświetlania + wyświetlania, przynajmniej nie można go znaleźć pod adresem Apple Developer String Format Specifiers Wygląda na to, że w moim przypadku muszę użyć NSNumberFormatter. Znalazłem sposób, aby ustawić reprezentację znaku plus, ale nie mogę dowiedzieć się, jak osiągnąć mój cel. Spróbowałem:Jak sformatować int na NSString z wyświetlaniem znaku + dla liczb dodatnich w iOS

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
    [numberFormatter setPositiveFormat:@"+0"]; 
    NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]]; 

ale obawiam się, że zmniejszyłoby liczbę GT 9 do 1 cyfry i nie chcę tego. Chcę wyświetlić dowolne pozytywne int z + i dowolnym negatywem za pomocą -. Czy to właściwa droga może:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setPositiveFormat:@"+#"]; 
NSString strNumber = [numberFormatter stringFromNumber:[NSNumber numberWithInt:intSomeNumber]]; 

Odpowiedz

18

Od samego strony, powiązać

Aby uzyskać więcej informacji, zobacz IEEE printf specification .

Teraz ze specyfikacją IEEE printf:

+ Efektem podpisanego przekształcenia musi zawsze zaczynają się od znaku ('+' lub '-'). Konwersja zaczyna się od znaku tylko wtedy, gdy wartość ujemna jest konwertowana, jeśli ta flaga nie jest określona.

Przykład:

NSLog(@"%+f", 3.455677); 

Wynik:

+3.455677 
2

Wystarczy użyć:

NSString *strNumber = [NSString stringWithFormat:@"%+d",intSomeNumber]; 
+1

To jest gonna be fun, gdy liczba jest ujemna. –

+0

@HermannKlecker; to był literówka :) Dzięki za powiadomienie –

+0

Dzięki za edycję –

7

Zastosowanie [NSString stringWithFormat:@"%+d", intSomeNumber]

8
[numberFormatter setPositivePrefix:@"+"];