Правильный способ разбора (локализации) цены с кодом валюты? - PullRequest
1 голос
/ 18 июня 2019

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

Что я нашел?

Я пытаюсь гуглить и пробовать каждое решение, и самый простой способ:

private val format: DecimalFormat = NumberFormat.getCurrencyInstance(globalLocale) as DecimalFormat

fun format(amount: Double, currencyCode: String): String {
    format.currency = Currency.getInstance(currencyCode)
    return format.format(amount)
}

, где globalLocale - Locale.getDefault() -> локаль телефона.

Проблема связана с отрицательными числами, по некоторым причинам это занимает скобки и вызов format(-10.00, "EUR") возвращает (EUR10.00)

Я нашел одно решение, чтобы применить шаблон:

format.applyPattern("$#,##0.00;-$#,##0.00") но это жесткое кодирование тормозит положение знака валюты и локализацию пробелов / запятых / точек.

Как этого добиться?

  1. Передайте amount и currencyCode и получите правильную localised цену без скобок в отрицательных числах?

EDIT Кажется, эта проблема только с Locale.US, поэтому вопрос заключается в том, как избежать этого круглых скобок в локали США?

1 Ответ

0 голосов
/ 18 июня 2019
object Currency {
    fun format(num: Double, currency: String, maxFractionDigits: Int?): String {
        val format = NumberFormat.getCurrencyInstance(Locale.getDefault())
        format.maximumFractionDigits = maxFractionDigits ?: 0
        val cFormat = Currency.getInstance(currency)
        format.currency = cFormat
        return format.format(num)
    }
}




    val amountStr = Currency.format(
        budgetAllocationModel.used ?: 0.0,
        budgetAllocationModel.currency ?: "USD", 0
    )

Валюта - это объект, который я использую для скрытия валюты с помощью Local.getDefault () для получения локальной строки валюты.

amountStr - пример использования этого объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...