Как использовать разделитель тысяч в NSString

NSString, как "1000.00" и "1008977.72",

как я могу отформатировать их до "1000.00" и "1 008 977,00"

Что мой вопрос, и помогите мне в этом, спасибо заранее.

Ответ 1

Я сделал это не долгое время. Здесь код:

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]];

Надеюсь, что это поможет


ИЗМЕНИТЬ

Как Olie спросил, что я отправлю код, который будет использовать текущие настройки локали для установки самих разделителей/десятичных разделителей.

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);

Использование [NSLocale localeWithLocaleIdentifier:] вместо [NSLocale currentLocale] дало мне следующие результаты:

[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

Только что переведено в Swift:

    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"