是否可以从货币代码中导出货币符号?

问题描述:

我的iPhone应用程序使用setCurrencyCode将NSDecimalNumber格式化为货币,但另一个屏幕仅显示货币符号。而不是同时存储货币代码和符号,是否可以从代码中派生符号?我认为以下可能的工作,但它只是返回符号为$:是否可以从货币代码中导出货币符号?

currencyCode = [dictPrices valueForKey:@"currencyCode"]; 
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[numberFormatter setCurrencyCode:currencyCode]; 
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

NSString *currencySymbol = [numberFormatter currencySymbol]; 

你想被设定的语言环境,而不是货币代码。然后你会得到格式化程序属性的预期结果(或者调整它们)。您也可以从locale对象本身获取货币符号等内容。因此,举例来说,如果你在显示格式日元日本的数字:

NSLocale* japanese_japan = [[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"] autorelease]; 
NSNumberFormatter *fmtr = [[[NSNumberFormatter alloc] init] autorelease]; 
[fmtr setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[fmtr setLocale:japanese_japan]; 

现在你的电话号码格式应该给你根据指定区域设置的规则货币符号和格式正确的符号。

+0

优秀的,谢谢! – 2010-04-05 08:10:22

你可以数从数量与货币代码的货币符号。

这是我的方式:

NSString *currencyCode = @"HKD"; 
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setCurrencyCode:currencyCode]; 
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

    cell.amountLabel.text = [numberFormatter stringFromNumber: expense.exAmount]; 

下面的代码将只返回CURRENCYSYMBOL对于给定货币代码

- (NSString*)getCurrencySymbolFromCurrencyCode:(NSString*)currencyCode { 
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    [formatter setCurrencyCode:currencyCode]; 
    [formatter setMaximumFractionDigits:0]; 
    NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:0]]; 
    [formatter release]; 
    return [string substringFromIndex:1]; 
} 
+1

'NSNumberFormatter'具有'currencySymbol'属性。 – pr1001 2013-11-28 13:38:53

我真的做这种方式。如果你决定这样做的SveinnV说,这可能是符号是0量之前的地方,那么你刚开@"0"为标志:

- (NSString *) currencySymbolForCurrencyCode:(NSString *) currencyCode 
{ 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    [formatter setMaximumFractionDigits:0]; 

    [formatter setCurrencyCode:currencyCode]; 

    NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:0]]; 
    NSArray *components = [string componentsSeparatedByCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]]; 

    return [components firstObject]; 
} 
+0

不仅符号可以在数字之后,符号前后可以有一个空格,所以最好修剪空格和数字。 – villapossu 2014-10-27 13:32:16

NSNumberFormatter * formatter = [NSNumberFormatter new]; 
formatter.numberStyle = NSNumberFormatterCurrencyStyle; 

NSString * localeIde = [NSLocale localeIdentifierFromComponents:@{NSLocaleCurrencyCode: currencyCode}]; 
formatter.locale = [NSLocale localeWithLocaleIdentifier:localeIde]; 

NSString * symbol = formatter.currencySymbol;