У меня есть список валют, давайте упростим его и скажем {USD, CAD, EUR, VND}
(но на самом деле мы поддерживаем 40 валют). Я хочу иметь возможность правильно форматировать числа на основе этих кодов валют.
Требования:
1. десятичные разделители и размещение символов (слева или справа от номера) должны основываться на коде валюты:
"USD" -> 1 200,45 $ (независимо от языка и региона, в котором находится телефон
используя, форматирование должно быть одной из "самых больших" стран, использующих этот код валюты, в данном случае США)
РЕДАКТИРОВАТЬ: это было решено путем ручной сборки хэш-карты String-> Locale, см. Комментарий @David Conrad.
2. символ всегда должен быть символом, а не буквами:
"USD" -> "$" (не "US $" или "USD")
"CAD" -> "$" (не "CA $" или "CAD")
"ВНД" -> "₫" ...
Я использую свой собственный шрифт, в котором я обязательно включил все поддерживаемые символы.
Я пытался использовать getNumberInstance
(и getCurrencyInstance
) [ answer ], но это не работает на всех телефонах (некоторые телефоны показывают «US $» вместо «$»). Я пытался создать хэш-карту, чтобы связать коды валют с Locales [ answer ], но это отношение один ко многим, поэтому оно ненадежно.
Я сейчас на грани, чтобы попробовать Joda Money или даже JavaMoney / jsr354-api , но после исследования обе эти библиотеки имеют свои причуды и, если возможно, я бы хотел бы избежать включения каких-либо дополнительных библиотек.
Итак, как нам это сделать?