Tengo el código de moneda (por ejemplo, USD, EUR, INR) de la respuesta del servicio web. Necesito mostrar los símbolos de moneda para el código de moneda correspondiente. Si el código de moneda es USD, necesito mostrar $, si el código de moneda es EUR, necesito mostrar €. ¿Cómo puedo hacer esto? Por favor sugiera cualquier idea o código de muestra para hacer esto. Por favor, ayúdame. Gracias por adelantado.¿Cómo puedo obtener símbolos de moneda del código de moneda en iphone?
Respuesta
Este código funciona encanto en mi proyecto. Voy a compartir esto con todos ustedes.
NSString *currencyCode = @"EUR";
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:currencyCode] autorelease];
NSString *currencySymbol = [NSString stringWithFormat:@"%@",[locale displayNameForKey:NSLocaleCurrencySymbol value:currencyCode]];
NSLog(@"Currency Symbol : %@", currencySymbol);
Gracias.
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
esto es para el estilo moneda estadounidense
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
//[numberFormatter setCurrencySymbol:@"Rs"];
[numberFormatter setNumberStyle:@"en_IN"];
Esto es para indio
Gracias por su respuesta. ¿Puedes decirme claramente? No puedo entender tu respuesta. No me confundas Gracias. –
Este código es lo que está buscando, aunque no es muy eficiente debido al bucle para las configuraciones regionales. Todavía funciona correctamente para todos los códigos de moneda, no solo para eur o usd. Espero que esto te ayudará.
- (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;
}
usarlo de esta manera:
NSString *currencySymbol = [self findCurrencySymbolByCode:currencyCode];
Este código tiene algunos defectos desagradables: si 'NSNumberFormatter' decide no colocar el símbolo de moneda primero en la salida, obtendrá un resultado incorrecto. Si el símbolo de la moneda ocupa más de un punto de código UTF-16, se cortará y no será válido –
. Mejore y permita que otros lo usen. ¿No es este sitio sobre eso?) y gracias. –
De hecho. Se ha publicado una respuesta mejorada. –
NSLocale
estará feliz de decirle el símbolo de moneda utilizada por un lugar en particular:
[locale objectForKey:NSLocaleCurrencySymbol];
También le diremos el código de moneda:
[locale objectForKey:NSLocaleCurrencyCode];
Entonces, todo lo que tiene que hacer ahora es buscar la configuración regional correspondiente a un código determinado. No hay un método incorporado (que yo sepa) para hacer esto directamente, de modo que recorra todas las configuraciones regionales conocidas y elija la que coincida. @ Umka's answer tiene un buen ejemplo de esto en el método -findLocaleByCurrencyCode:
.
Puede optimizar el proceso construyendo su propia tabla de búsqueda, en lugar de recorrer todas las configuraciones regionales cada vez. Es posible que deba manejar la posibilidad de códigos de moneda duplicados también, lo que requeriría cierta heurística para decidir cuál es la configuración regional más probable.
NSNumberFormatter * formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
NSString * localeIde = [NSLocale localeIdentifierFromComponents:@{NSLocaleCurrencyCode: currencyCode}];
formatter.locale = [NSLocale localeWithLocaleIdentifier:localeIde];
NSString * symbol = formatter.currencySymbol;
Basado en el código de @Mike Abdullah y @Umka, estas son algunas funciones en 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 Versión
Encontrar local por código de moneda:
let localeGBP = Locale
.availableIdentifiers
.map { Locale(identifier: $0) }
.first { $0.currencyCode == "GBP" }
print(localeGBP?.currencySymbol) // £
formato de moneda
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. ¿Cómo obtener NSLocale del código de moneda?
- 2. Código de moneda de 3 dígitos al símbolo de moneda
- 3. Código de moneda al mapeo de símbolo de moneda
- 4. obtener CultureInfo desde un código de moneda?
- 5. ¿Es posible derivar un símbolo de moneda del código de moneda?
- 6. ¿Cómo anulo los símbolos de moneda en Java?
- 7. Formatear moneda sin símbolo de moneda
- 8. Validación de moneda
- 9. formato de moneda
- 10. Java: símbolo de moneda basado en el código de moneda ISO 4217
- 11. Cómo configurar moneda en java?
- 12. Mostrando moneda en C#
- 13. Obtener la moneda de la cultura actual?
- 14. Adquiriendo el código de moneda de un país
- 15. ¿Puedo obtener una descripción de texto de un código de moneda ISO en Java?
- 16. moneda Matemáticas en JavaScript
- 17. Conversión de moneda
- 18. ¿Cómo obtener el código de país y el código de moneda por dirección IP?
- 19. NSNumberFormatter ¿Moneda sin símbolo?
- 20. ¿Cómo obtener tanto el código de moneda como el nombre de visualización localizado en iOS?
- 21. Cómo obtener un patrón de moneda de cultura específica
- 22. Moneda local Símbolo
- 23. jqGrid formato de moneda
- 24. StringFormat en XAML, WPF: formato de moneda
- 25. iPhone: Cómo llegar símbolo de moneda local (es decir, "$" Unstead de "AU $")
- 26. obtener la unidad más pequeña de una moneda en python
- 27. Java Conversión larga en moneda
- 28. Cómo obtener la moneda de la tienda Magento
- 29. Número de moneda negativa XAML
- 30. ¿Detecta moneda según la ubicación del usuario?
No creo que este código funcione como se desee.Muestra los símbolos de moneda correctos solo para eur y usd. Para todas las demás monedas, muestra el primer carácter para el código de moneda. –
Este código parece mágico, no está claro por qué hace lo que hace. Si cambia la tercera línea para que imprima '[locale objectForKey: NSLocaleCurrencySymbol]', la salida imprime 'Currency Symbol: ¤'. – dteoh
este código funciona correctamente solo para EUR y USD, otros no funcionan bien para mí. –