2010-04-04 112 views
6

我的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]; 

回答

5

你想被設定的語言環境,而不是貨幣代碼。然後你會得到格式化程序屬性的預期結果(或者調整它們)。您也可以從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

6

你可以數從數量與貨幣代碼的貨幣符號。

這是我的方式:

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

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

下面的代碼將只返回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

0

我真的做這種方式。如果你決定這樣做的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

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

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

NSString * symbol = formatter.currencySymbol;