将NSNumberFormatter的负格式从(xxx.xx)更改为-xxx.xx

Mel*_*emi 8 cocoa cocoa-touch negative-number number-formatting

我想改变我的NSNumberformatter从显示带有括号的负数到将减号放在前面(或者无论本地标准是什么).

我想我可以用setNegativeFormat做到这一点:

但阅读Apple的哦,如此彻底的文档,我只是在摸不着头脑:


setNegativeFormat:

设置接收器用于显示负值的格式.

- (void)setNegativeFormat:(NSString *)aFormat
Run Code Online (Sandbox Code Playgroud)

参数 aFormat一个字符串,指定负值的格式.

可用性适用 于iPhone OS 2.0及更高版本.

另请参阅 - negativeFormat

NSNumberFormatter.h中声明


我对aFormat有什么选择?!?来自Doc Docrs,这里的链接会杀了你吗?

编辑:这里有什么值得宣言:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
Run Code Online (Sandbox Code Playgroud)

对我来说,保留本地化的货币符号和小数位是很重要的.因此,[currencyFormatter setNegativeFormat:@" - #,## 0.00"]可能无法正常工作,因为货币缺失,并且不能为所有货币假设2位小数.

Ale*_*ski 18

如果你看一下Cocoa数据格式编程指南中的"格式字符串"部分:

格式字符串使用Unicode技术标准#35中的格式模式(此参考版本为tr35-6; Mac OS X v10.4格式化程序使用版本tr35-4).

编辑:

如果要根据货币设置格式字符串,可以使用该¤字符,例如:

[formatter setFormat:@"¤#,##0.00"];
Run Code Online (Sandbox Code Playgroud)

这将为当前本地化添加货币符号代替¤角色.

因此,将相同的概念应用于否定格式字符串:

[formatter setFormat:@"-¤#,##0.00"];
Run Code Online (Sandbox Code Playgroud)

这也将应用货币符号代替¤当前本地化.

  • 请注意,这会混淆任何本地化的货币格式.我最终使用正格式并将减号添加到其中:[formatter setNegativeFormat:[@" - "stringByAppendingString:[self.numberFormatter positiveFormat]]]; (10认同)