如何检查货币符号位于哪一侧?例如,在美国,符号将是这样的:“$56.58
”,但在法国,它将是这样的:“56.58€
”。那么我怎么能够检测它是在右侧还是左侧?
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setLocale:[NSLocale currentLocale]];
答案 0 :(得分:4)
如果您只想将数字格式化为货币,请将格式化程序的numberStyle
设置为NSNumberFormatterCurrencyStyle
,然后使用其stringFromNumber:
方法。
如果出于某种原因,您确实想知道格式化程序区域设置格式中货币符号的位置,可以向格式化程序询问其positiveFormat
并查找字符¤
(U + 00A4货币符号)。
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
f.numberStyle = NSNumberFormatterCurrencyStyle;
f.locale = [NSLocale localeWithLocaleIdentifier:@"en-US"];
NSLog(@"%@ format=[%@] ¤-index=%lu", f.locale.localeIdentifier, f.positiveFormat,
(unsigned long)[f.positiveFormat rangeOfString:@"\u00a4"].location);
f.locale = [NSLocale localeWithLocaleIdentifier:@"fr-FR"];
NSLog(@"%@ format=[%@] ¤-index=%lu", f.locale.localeIdentifier, f.positiveFormat,
(unsigned long)[f.positiveFormat rangeOfString:@"\u00a4"].location);
f.locale = [NSLocale localeWithLocaleIdentifier:@"fa-IR"];
NSLog(@"%@ format=[%@] ¤-index=%lu", f.locale.localeIdentifier, f.positiveFormat,
(unsigned long)[f.positiveFormat rangeOfString:@"\u00a4"].location);
结果:
2015-06-10 21:27:09.807 commandline[88239:3716428] en-US format=[¤#,##0.00] ¤-index=0
2015-06-10 21:27:09.808 commandline[88239:3716428] fr-FR format=[#,##0.00 ¤] ¤-index=9
2015-06-10 21:27:09.808 commandline[88239:3716428] fa-IR format=[¤#,##0] ¤-index=1
请注意,在fa-IR
情况下,符号不是格式字符串中的第一个或最后一个字符。第一个字符(索引为零)是不可见的。这是U + 200E LEFT-TO-RIGHT MARK。