Como definir CurrencySymbol em Readonly CultureInfo.NumberFormat?
-
11-09-2019 - |
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!
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));
}
}