检测区域货币格式(iPhone)

时间:2012-06-07 23:47:37

标签: iphone xcode xcode4

好的,所以我有一个带有数字字段的应用程序(值为0-9的按钮),用于更新格式化为本地货币的标签。 标签会自动为用户放置小数,因此格式为0.00。 现在这是一个问题,因为iphone将大多数其他货币(例如欧元)格式化为0,00。

有没有办法检测区域货币格式(设置>国际>区域格式)?

然后我会相应地制作一个if语句。

我目前的号码代码:

NSString *digit = sender.currentTitle;
numberField.text = [numberField.text stringByAppendingString:digit];

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setGroupingSeparator:@""];
[numberFormatter setMaximumIntegerDigits:4];
[numberFormatter setMaximumFractionDigits:2];
[numberFormatter setMaximumFractionDigits:2];

numberField.text = [numberField.text stringByReplacingOccurrencesOfString:@"."    withString:@""];
NSDecimalNumber *currency = [[NSDecimalNumber decimalNumberWithString:numberField.text]   decimalNumberByDividingBy: [NSDecimalNumber decimalNumberWithString:@"100"]];
numberField.text = [numberFormatter stringFromNumber:currency];

您可以在第11行看到它插入小数。当我将其更改为逗号时,0,00格式正常工作。

转换:

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:[numberField.text floatValue]]];

numberField.text=string;

5 个答案:

答案 0 :(得分:2)

------------------ EDIT ------------------

我相信@lnafziger可能有更有效的方法。除了NSLocaleDecimalSeparator密钥之外,您还可能会发现NSLocaleGroupingSeparatorNSLocaleCurrencySymbol密钥非常有用。

希望这有帮助!

您可以使用:

NSString *locale = [NSLocale currentLocale] localeIdentifier];
if(locale isEqualToString: @"en_US"){

    //Set Device Currency to American Dollars

}
else if(locale isEqualToString: @"fr_FR"){

    //Set Device Currency to Euros

}
else if(locale isEqualToString: @"en_AU"){

    //Set Device Currency to Australian Dollars

}

有关NSLocale的详情,请参阅here

希望这有帮助!

答案 1 :(得分:2)

要获取当前区域设置的小数点分隔符,请使用:

NSLocale *loc       = [NSLocale currentLocale];
NSString *separator = [loc objectForKey:NSLocaleDecimalSeparator];

答案 2 :(得分:1)

要获取本地(来自用户定义的设置)货币US $或€,我使用此代码段:

NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *dec = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];
[f setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *string = [f stringFromNumber:[NSNumber numberWithFloat:100.01]];

NSString *currency = [string stringByReplacingOccurrencesOfString:dec withString:@""];
currency =  [currency stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"local currency:%@",currency);

答案 3 :(得分:0)

Iphone是一种 hnu985jmpl895662 方式格式。 所以答案是这样的;第4代与当前的discisenables7。 Lol Jk IDK

答案 4 :(得分:0)

这会将数字转换为本地货币字符串 [NSNumberFormatter localizedStringFromNumber:dec numberStyle:NSNumberFormatterCurrencyStyle];