Pergunta

Eu estou tentando formatar uma moeda (suíço Frank - de-CH) com um símbolo (ICC), que é diferente que o que a cultura .Net padrão é (SFr.). O problema é que o NumberFormat para a cultura é somente leitura.

Existe uma maneira simples de resolver este problema usando CultureInfo e NumberFormat? Existe alguma maneira que eu posso substituir o CurrencySymbol?

Exemplo:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

Isto irá erro na definição do NumberFormat.CurrencySymbol porque NumberFormat é **ReadOnly**.

Obrigado!

Foi útil?

Solução

Chamada Clone na CultureInfo, que irá criar uma versão mutável, em seguida, definir o símbolo de moeda.

Você poderia ser mais específico: buscar o NumberFormatInfo e só clone isso. É um pouco mais elegante, IMO, a menos que você precisa para mudar qualquer outra coisa na cultura.

Exemplo em C #:

using System;

using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo original = CultureInfo.GetCultureInfo(2055);
        NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone();
        mutableNfi.CurrencySymbol = "X";
        Console.WriteLine(50.ToString("C", mutableNfi));
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top