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

jxd*_*ter 14 nsstring ios

NSString就像"1000.00"和"1008977.72",

如何将它们格式化为"1,000.00"和"1,008,977.00"

这是我的问题,请帮助我,提前谢谢你.

Nov*_*arg 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]];
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你


编辑

正如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);
Run Code Online (Sandbox Code Playgroud)

使用[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
Run Code Online (Sandbox Code Playgroud)

  • 这是非常好的,但如果您编辑以显示如何获取本地的分组分隔符(*ie*,USA使用",",而欧洲大部分地区使用"."作为千位分隔符,我将对您的答案进行投票.反之亦然,小数分隔符.) (2认同)