Форматирование валюты на основе кода валюты - PullRequest
0 голосов
/ 05 июля 2018

У меня есть список валют, давайте упростим его и скажем {USD, CAD, EUR, VND} (но на самом деле мы поддерживаем 40 валют). Я хочу иметь возможность правильно форматировать числа на основе этих кодов валют.

Требования:

1. десятичные разделители и размещение символов (слева или справа от номера) должны основываться на коде валюты:

"USD" -> 1 200,45 $ (независимо от языка и региона, в котором находится телефон используя, форматирование должно быть одной из "самых больших" стран, использующих этот код валюты, в данном случае США)

РЕДАКТИРОВАТЬ: это было решено путем ручной сборки хэш-карты String-> Locale, см. Комментарий @David Conrad.

2. символ всегда должен быть символом, а не буквами:

"USD" -> "$" (не "US $" или "USD")
"CAD" -> "$" (не "CA $" или "CAD")
"ВНД" -> "₫" ...

Я использую свой собственный шрифт, в котором я обязательно включил все поддерживаемые символы.


Я пытался использовать getNumberInstancegetCurrencyInstance) [ answer ], но это не работает на всех телефонах (некоторые телефоны показывают «US $» вместо «$»). Я пытался создать хэш-карту, чтобы связать коды валют с Locales [ answer ], но это отношение один ко многим, поэтому оно ненадежно.

Я сейчас на грани, чтобы попробовать Joda Money или даже JavaMoney / jsr354-api , но после исследования обе эти библиотеки имеют свои причуды и, если возможно, я бы хотел бы избежать включения каких-либо дополнительных библиотек.

Итак, как нам это сделать?

...