Alterar símbolo da moeda local no System.Globalization.NumberFormatInfo
-
22-07-2019 - |
Pergunta
Eu criei um objeto CultureInfo usando nova CultureInfo ( "fr-FR"). Agora eu tenho um número que eu quero chamar .ToString ( "C", FrenchCultureInfo). Os puts cadeia resultante de € depois do número. Por quê?
CultureInfo french = new CultureInfo("fr-FR");
double value = 1234.56;
string output = value.ToString("C", french);//output = "1 234,56 €"
De tudo que eu vi, o euro tem de ser à esquerda, e minha requisitos de negócios mandato que é do lado esquerdo. No entanto, não há nenhuma maneira para programaticamente definir este valor.
Algumas ideias sobre como posso definir esse valor facilmente? Eu comecei a tomar um objeto de cultura US e copiar tudo, desde a cultura francesa sobre a ele, uma vez que ainda quer todas as outras definições Francesa, com excepção para o Euro no valor certo. Mas este método é muito demorado e frustrante.
Obrigado!
Solução
Clone o original e, em seguida, modificá-lo:
CultureInfo french = new CultureInfo("fr-FR");
french = (CultureInfo) french.Clone();
// Adjust these to suit
french.NumberFormat.CurrencyPositivePattern = 2;
french.NumberFormat.CurrencyNegativePattern = 2;
double value = 1234.56;
string output = value.ToString("C", french);//output = "€ 1 234,56"
Note que isto só irá afetar esse objeto específico CultureInfo
, não aquele obtido para francesa em geral -. Então você precisa se certificar que você usá-lo em todos os lugares