Изменение местоположения символа валюты в System.Globalization.NumberFormatInfo
-
22-07-2019 - |
Вопрос
Я создал объект CultureInfo, используя новый 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 €"
Судя по всему, что я видел, евро должен быть слева, и мои бизнес-требования требуют, чтобы он был слева.Однако программно установить это значение невозможно.
Есть идеи, как легко установить это значение?Я начал брать объект культуры США и копировать в него все из французской культуры, поскольку нам по-прежнему нужны все остальные французские настройки, за исключением евро, с правильным значением.Но этот метод очень трудоемкий и разочаровывающий.
Спасибо!
Решение
Клонируйте оригинал, а затем измените его:
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
объект, а не тот, который получен для французского языка в целом, поэтому вам нужно убедиться, что вы используете его везде.