Modifica della posizione del simbolo di valuta in System.Globalization.NumberFormatInfo
-
22-07-2019 - |
Domanda
Ho creato un oggetto CultureInfo usando il nuovo CultureInfo (" fr-FR "). Ora ho un numero che desidero chiamare .ToString (" C " ;, FrenchCultureInfo). La stringa risultante inserisce & # 8364; DOPO il numero. Perché?
CultureInfo french = new CultureInfo("fr-FR");
double value = 1234.56;
string output = value.ToString("C", french);//output = "1 234,56 €"
Da quanto ho visto, l'euro deve essere sulla sinistra e i miei requisiti aziendali richiedono che sia sulla sinistra. Tuttavia, non è possibile impostare programmaticamente questo valore.
Qualche idea su come posso impostare facilmente questo valore? Ho iniziato a prendere un oggetto di cultura degli Stati Uniti e copiarci tutto dalla cultura francese, poiché vogliamo ancora tutte le altre impostazioni francesi, tranne l'euro sul giusto valore. Ma questo metodo richiede molto tempo e frustrante.
Grazie!
Soluzione
Clona l'originale e poi modificalo:
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"
Nota che questo influenzerà solo quello specifico oggetto CultureInfo
, non quello ottenuto per il francese in generale - quindi dovrai assicurarti di usarlo ovunque.