У меня есть код валюты (например: USD, EUR, INR) из ответа webservice. Мне нужно показать символы валюты для соответствующего кода валюты. Если код валюты - доллар США, мне нужно показать $, если код валюты - EUR, мне нужно показать €. Как я могу это сделать? Пожалуйста, предложите любую идею или образец кода для этого. Пожалуйста, помогите мне. Заранее спасибо.Как я могу получить символы валюты из кода валюты в iphone?
ответ
Этот код работает шарм в моем проекте. Я расскажу об этом всем вам.
NSString *currencyCode = @"EUR";
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:currencyCode] autorelease];
NSString *currencySymbol = [NSString stringWithFormat:@"%@",[locale displayNameForKey:NSLocaleCurrencySymbol value:currencyCode]];
NSLog(@"Currency Symbol : %@", currencySymbol);
Спасибо.
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
это для валюты США стиль
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
//[numberFormatter setCurrencySymbol:@"Rs"];
[numberFormatter setNumberStyle:@"en_IN"];
Это для индийской
Спасибо за ваш ответ. Не могли бы вы рассказать мне об этом? Я не понимаю ваш ответ. Не ошибетесь. Благодарю. –
Этот код является тем, что вы ищете, хотя и не очень эффективным из-за цикла для локалей. Тем не менее он работает правильно для всех кодов валют, а не только для eur или usd. Надеюсь, что это поможет вам.
- (NSLocale *) findLocaleByCurrencyCode:(NSString *)_currencyCode
{
NSArray *locales = [NSLocale availableLocaleIdentifiers];
NSLocale *locale = nil;
for (NSString *localeId in locales) {
locale = [[[NSLocale alloc] initWithLocaleIdentifier:localeId] autorelease];
NSString *code = [locale objectForKey:NSLocaleCurrencyCode];
if ([code isEqualToString:_currencyCode])
break;
else
locale = nil;
}
return locale;
}
- (NSString *)findCurrencySymbolByCode:(NSString *)_currencyCode
{
NSNumberFormatter *fmtr = [[NSNumberFormatter alloc] init];
NSLocale *locale = [self findLocaleByCurrencyCode:_currencyCode];
NSString *currencySymbol;
if (locale)
[fmtr setLocale:locale];
[fmtr setNumberStyle:NSNumberFormatterCurrencyStyle];
currencySymbol = [fmtr currencySymbol];
[fmtr release];
if (currencySymbol.length > 1)
currencySymbol = [currencySymbol substringToIndex:1];
return currencySymbol;
}
Используйте это следующим образом:
NSString *currencySymbol = [self findCurrencySymbolByCode:currencyCode];
Этот код имеет некоторые неприятные недостатки: если 'NSNumberFormatter' решает не помещать символ валюты в первую очередь на выходе, вы получите неверный результат. Если символ валюты занимает более одного кодового слова UTF-16, он будет отрублен и недействителен. –
Улучшите его и разрешите другим использовать. Разве это не сайт?) и спасибо. –
Действительно. Опубликован улучшенный ответ. –
NSLocale
радостью расскажет вам символ валюты, используемой в конкретной местности:
[locale objectForKey:NSLocaleCurrencySymbol];
Это будет также сказать вам код валюты:
[locale objectForKey:NSLocaleCurrencyCode];
Итак, теперь вам нужно искать язык, соответствующий данному коду. Нет встроенного метода (который я знаю), чтобы сделать это напрямую, поэтому пройдите по всем известным локалям и выберите тот, который соответствует. @ Умка answer имеет хороший пример этого в методе -findLocaleByCurrencyCode:
.
Вы можете оптимизировать процесс, создав свою собственную таблицу поиска, а не итерируя все локали каждый раз. Возможно, вам также придется обрабатывать возможность дублирования кодов валют, что потребует некоторой эвристики для принятия решения о том, какой из них наиболее вероятен.
NSNumberFormatter * formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
NSString * localeIde = [NSLocale localeIdentifierFromComponents:@{NSLocaleCurrencyCode: currencyCode}];
formatter.locale = [NSLocale localeWithLocaleIdentifier:localeIde];
NSString * symbol = formatter.currencySymbol;
Основываясь на коде от @Mike Abdullah и @Umka, вот некоторые функции в Swift.
func findCodeAndSymbolForAllLocales() {
let locales = NSLocale.availableLocaleIdentifiers()
for localeId in locales {
let locale = NSLocale(localeIdentifier: localeId)
if let code = locale.objectForKey(NSLocaleCurrencyCode) as? String,
let symbol = locale.objectForKey(NSLocaleCurrencySymbol) {
print("\(code) \(symbol)")
}
}
}
func findCurrencySymbolByCode(currencyCode:String) -> String? {
guard let locale = findLocaleByCurrencyCode(currencyCode) else {
print("locale for \(currencyCode) is nil")
return nil
}
return locale.objectForKey(NSLocaleCurrencySymbol) as? String
}
func findLocaleByCurrencyCode(currencyCode:String) -> NSLocale? {
let locales = NSLocale.availableLocaleIdentifiers()
var locale:NSLocale?
for localeId in locales {
locale = NSLocale(localeIdentifier: localeId)
if let code = locale!.objectForKey(NSLocaleCurrencyCode) as? String {
if code == currencyCode {
return locale
}
}
}
return locale
}
Swift 4 версия
Поиск локаль по код валюты:
let localeGBP = Locale
.availableIdentifiers
.map { Locale(identifier: $0) }
.first { $0.currencyCode == "GBP" }
print(localeGBP?.currencySymbol) // £
Форматирование валюты
if let locale = localeGBP {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = locale
let result = formatter.string(from: 100000) // £100,000.00
}
Swift
let locale = NSLocale(localeIdentifier: currencyCode)
let currencySymbol = locale.displayName(forKey: .currencySymbol, value: currencyCode) ?? currencyCode
print("Currency symbol: \(currencySymbol)")
- 1. Извлечь символ валюты из кода валюты Yii
- 2. Как я могу получить «локаль» из кода валюты?
- 3. получить CultureInfo из кода валюты?
- 4. Как получить экземпляр NumberFormat из кода валюты?
- 5. Как получить название страны из кода валюты?
- 6. Можно ли вывести символ валюты из кода валюты?
- 7. Получить символ валюты из кода curency
- 8. Как получить символ валюты по названию валюты?
- 9. Приобретение кода валюты страны
- 10. iPhone: Как получить символ местной валюты (т.е. "$" unstead из "AU $")
- 11. Добавить символы валюты в `TextBlock`
- 12. валюты формат от символа валюты
- 13. Как получить символ валюты
- 14. Как получить символ валюты из кода валюты для всех доступных мест в Swift?
- 15. Настройка валюты в iPhone App
- 16. google translate changes символы валюты
- 17. Получение валютного символа из кода валюты
- 18. Разработайте SUM, включая символы валюты
- 19. Как оценивать символы валюты в jquery
- 20. Как отображать символы валюты в приложении Blackberry?
- 21. iOS Как получить символ валюты по коду валюты?
- 22. Как я могу взять значение метки валюты?
- 23. Как переопределить символы валюты в Java?
- 24. валюты
- 25. ICU Probe Все символы валюты
- 26. Формат валюты без символа валюты
- 27. iPhone: как получить символ валюты из строки суммы?
- 28. Как получить код страны/название из кода валюты
- 29. R regex: получить аббревиатуры валюты
- 30. Как показать символ валюты вместо имени валюты?
Я не думаю, что этот код работает по своему желанию.Он показывает правильные символы валюты только для eur и usd. Для всех других валют он отображает первый символ для кода валюты. –
Этот код кажется волшебным, непонятно, почему он делает то, что он делает. Если вы измените третью строку так, чтобы она печатала '[locale objectForKey: NSLocaleCurrencySymbol]', на выходе выводится символ «Currency Symbol: ¤'. – dteoh
этот код работает корректно только для EUR и USD, другие не работают хорошо для меня. –