ios - 禁用 NSNumberFormatter 的语言环境

标签 ios objective-c

我正在使用格式为“##,##0.00”的 NSNumberFormatter,但我的语言环境设置为使用货币格式如“## ##0.0”的南非地区“,有没有办法让我禁用 NSNumberFormatter 使用语言环境,并专门使用我为格式输入的内容?我已经试过了:

formatter.locale = nil;

formatter.formatterBehavior = NSNumberFormatterNoStyle;

我程序的一些输出:

格式 = #,##0.00

结果 = -8 933 434,38

有一个变量

formatter.localizesFormat = NO;

但这仅适用于 OS X

服务器将告诉我要使用的数字格式,并且需要覆盖用户设置的区域。

相关代码:

self.amountFormat = @"##,##0.00";

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
NSLog(@"self.amountFormat = %@", amountFormat);
[formatter setNumberStyle:NSNumberFormatterNoStyle];
[formatter setPositiveFormat: self.amountFormat];
[formatter setLenient:YES];

NSNumber* newNumber = [NSNumber numberWithDouble: [number doubleValue] / 100.0];

NSString* numberString = [formatter stringFromNumber: newNumber];

NSLog(@"numberString = %@",numberString);

输出

[Currency.m:64] self.amountFormat = ##,##0.00
[Currency.m:73] numberString = 1 533 434,34

如果您想测试,请将通用 - 国际 - 区域格式下的设置更改为南非

最佳答案

对于格式化字符串,,表示分组分隔符.表示小数分隔符,由locale指定, 不是文字字符。参见 the format specification .
要覆盖它,您必须指定 grouping separator,decimal separator. 的区域设置,例如 en_US_POSIX

[formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

或手动指定分组分隔符小数分隔符,如:

[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];

关于ios - 禁用 NSNumberFormatter 的语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25321578/

相关文章:

ios - SSL - 在 iOS7 中表现不同?

android - 如何从 flash 迁移到 adobe air iOs 和 android?

ios - Q :get a view's constrains returns empty array

objective-c - 当我在 Xcode6 中存档我的应​​用程序时会生成哪个版本?

ios - 在 iOS 应用程序中集成 Google Plus

iphone - iOS自定义UITableView中的滚动条

ios - 我需要一个提示 - 是否可以将消息推送到仅在某些特定区域(基于地理的通知)的 iPhone?

objective-c - Swift桥接头导入导入Hopscotch-Swift.h本身的文件时如何防止循环引用

objective-c - 将 NSComboboxCell 与 NSTableView 一起使用

ios - 检测推送通知