Domanda

Sto cercando di formattare una valuta (svizzero Frank - de-CH) con il simbolo (CHF), che è diverso da quello che la cultura di default Net è (SFr.). Il problema è che il NumberFormat per la cultura è di sola lettura.

C'è un modo semplice per risolvere questo problema utilizzando CultureInfo e NumberFormat? C'è qualche modo posso ignorare il CurrencySymbol?

Esempio:

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

Questo errore sull'impostazione del NumberFormat.CurrencySymbol perché NumberFormat è **ReadOnly**.

Grazie!

È stato utile?

Soluzione

Chiamata Clone sul CultureInfo, che creerà una versione mutevole, quindi impostare il simbolo di valuta.

Si potrebbe essere più preciso: prendere il NumberFormatInfo e solo clonare quello. E 'un po' più elegante, IMO, a meno che non hai bisogno di cambiare qualsiasi altra cosa nella cultura.

Esempio in 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));
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top