Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Colocar o espaço após o símbolo monetário

No curso é usado o replace de "R$" para "R$ " (add um espaço após o símbolo)

Bom... se considerarmos que usamos o locale e ele pegou o R$ das configurações da biblioteca não é arriscado que isso mude e nosso app não consiga mais fazer esse replace??

Uma possibilidade seria usar o currencyCode da própria lib:

fun BigDecimal.formataParaBr() : String {
    val moeda = DecimalFormat.getCurrencyInstance(Locale("pt", "BR"))
    return moeda.format(this).replace(moeda.currency.currencyCode, moeda.currency.currencyCode + " ")
}

Sei que se trata de um app de estudos... mas pensando no dia a dia devemos ter essa preocupação mesmo ou é exagero? Ou mesmo há outra forma de fazermos isso?

1 resposta
solução!

Oi Rodrigo tudo bem?

É bem válido o seu ponto de vista e sugestão, a implementação que fiz foi focada apenas para fins didático, por isso nem foquei na melhor abordagem para garantir que sempre vai ter um resultado visualmente esperado.

Sendo assim, a sua implementação seria a ideal para lidar com esse tipo de formatação. Apenas uma sugestão seria extrair o código para uma variável, para deixar menos verboso e evitar chamadas de métodos desnecessariamente:

val codigoMoeda = moeda.currency.currencyCode

Concluindo, não é exagero a sua forma de raciocinar e proporciona maior flexibilidade, ainda mais se quiser uma implementação genérica na qual recebe a língua e país para o Locale via parâmetro. Você poderia usar para outros países e não precisaria se preocupar com hard coded.

Meus parabéns pela conclusão.

[]s