Как установить currencySymbol в CultureInfo.NumberFormat, доступном только для чтения?

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

Вопрос

Я пытаюсь отформатировать валюту (швейцарский франк -- de-CH) символом (CHF), который отличается от значения по умолчанию .Сетевая культура (SFr.).Проблема в том, что числовой формат для культуры доступен только для чтения.

Есть ли простой способ решить эту проблему с помощью CultureInfo и NumberFormat?Есть ли какой-нибудь способ, которым я могу переопределить currencySymbol?

Пример:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

Это приведет к ошибке при настройке NumberFormat.CurrencySymbol потому что NumberFormat является **ReadOnly**.

Спасибо!

Это было полезно?

Решение

Позвонить Clone на CultureInfo, который создаст изменяемую версию, затем установит символ валюты.

Вы могли бы быть более конкретными:принесите NumberFormatInfo и только клонируйте это.Это немного более элегантно, ИМО, если только вам не нужно изменить что-то еще в культуре.

Пример на C#:

using System;

using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo original = CultureInfo.GetCultureInfo(2055);
        NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone();
        mutableNfi.CurrencySymbol = "X";
        Console.WriteLine(50.ToString("C", mutableNfi));
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top