Изменение местоположения символа валюты в System.Globalization.NumberFormatInfo

Я создал объект CultureInfo, используя new CultureInfo("fr-FR"). Теперь у меня есть номер, который я хочу назвать .ToString("C", FrenchCultureInfo). Полученная строка ставит € ПОСЛЕ числа. Почему?

CultureInfo french = new CultureInfo("fr-FR");
double value = 1234.56;
string output = value.ToString("C", french);//output = "1 234,56 €"

Из всего, что я видел, евро должен быть слева, и мои бизнес-требования требуют, чтобы он был слева. Однако программно установить это значение невозможно.

Любые идеи о том, как я могу легко установить это значение? Я начал брать объект культуры США и копировать в него все из французской культуры, так как нам все еще нужны все остальные французские настройки, кроме евро в правильном значении. Но этот метод очень трудоемкий и разочаровывающий.

Спасибо!


person Eric Lynes    schedule 18.09.2009    source источник


Ответы (1)


Клонируйте оригинал, а затем измените его:

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"

Обратите внимание, что это повлияет только на этот конкретный объект CultureInfo, а не на тот, который получен для французского языка в целом, поэтому вам нужно убедиться, что вы используете его везде.

person Jon Skeet    schedule 18.09.2009
comment
Чувак, единственное свойство, которое я НЕ проверял. Спасибо, Джон! - person Eric Lynes; 18.09.2009