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!

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top