如何在NSString中使用千位分隔符

14

NSString就像是"1000.00"和"1008977.72",

我怎么样才能将它们格式化为"1,000.00"和"1,008,977.00"呢?

这是我的问题,请帮助我解决,提前感谢您。

2个回答

47

我不久前做过这件事。以下是代码:

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
这很不错,但如果您编辑以显示如何获取本地的分组分隔符(即,美国使用“,”而欧洲大多数地区使用“。”作为千位分隔符,小数点分隔符则相反),我会给您的答案点赞。 - Olie
1
@Olie,希望我做得对。我已经有一段时间没有接触Objective-C了 :-) - Novarg
我不得不添加 [formatter setMinimumFractionDigits:2]; 才能使它对我起作用。 - GeneCode

1

刚刚用 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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接