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

StackOverflow https://stackoverflow.com/questions/1446273

  •  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 объект, а не тот, который получен для французского языка в целом, поэтому вам нужно убедиться, что вы используете его везде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top