Come impostare CurrencySymbol su Readonly CultureInfo.NumberFormat?
-
11-09-2019 - |
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!
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));
}
}