2012-04-11 5 views
11

NSString wie „1000,00“ und „1008977,72“ verwenden,Wie Tausendertrennzeichen in NSString

wie kann ich sie formatiert werden zu „1.000,00“ und „1,008,977.00“

Das ist meine Frage ist, und helfen Sie mir mit das, danke im Voraus.

Antwort

44

Ich habe das nicht lange gedauert. Hier ist der Code:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setGroupingSeparator:@","]; 
[numberFormatter setGroupingSize:3]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
[numberFormatter setDecimalSeparator:@"."]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:1008977.72]]; 

Hope it


EDIT

Als Olie fragte hilft werde ich einen Code schreiben, die aktuellen Locale-Einstellungen verwenden festlegen Gruppierung/dezimal Trennzeichen selbst.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setLocale:[NSLocale currentLocale]]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:1008977.72]]; 
NSLog(@"The string: %@", theString); 

Mit [NSLocale localeWithLocaleIdentifier:] statt [NSLocale currentLocale] gab mir die folgenden Ergebnisse:

[NSLocale localeWithLocaleIdentifier:@"be_NL"] 
The string: 1 008 977,72 
[NSLocale localeWithLocaleIdentifier:@"en_GB"] 
The string: 1,008,977.72 
[NSLocale localeWithLocaleIdentifier:@"DE"] 
The string: 1.008.977,72 
[NSLocale localeWithLocaleIdentifier:@"en_US"] 
The string: 1,008,977.72 
+2

die ziemlich gut ist, aber ich werde up-abstimmen Ihre Antwort, wenn Sie bearbeiten, um zu zeigen, wie das Gruppierungstrennzeichen für das lokale (* ie *, USA verwendet "," verwendet wird, während der größte Teil Europas "." als Tausendertrennzeichen und umgekehrt als Dezimaltrennzeichen verwendet.) – Olie

+1

@Olie Ich hoffe ich habe es richtig gemacht. Habe seit einiger Zeit kein Objective-C mehr angefasst :-) – Novarg

+0

Super, danke! – Olie

0

Just in Swift übersetzt:

let formatter = NumberFormatter() 
    formatter.groupingSeparator = "," 
    formatter.groupingSize = 3 
    formatter.usesGroupingSeparator = true 
    formatter.decimalSeparator = "." 
    formatter.numberStyle = .decimal 
    formatter.maximumFractionDigits = 2 
    formatter.minimumFractionDigits = 2 
    formatter.minimumIntegerDigits = 1 
    let result = formatter.string(from: NSNumber(value: value)) ?? "0.00"